vb6 中的智能感知不适用于 Interop 和 UnmanagedType.Struct [重复]

Posted

技术标签:

【中文标题】vb6 中的智能感知不适用于 Interop 和 UnmanagedType.Struct [重复]【英文标题】:intellisense in vb6 doens't work with Interop and UnmanagedType.Struct [duplicate] 【发布时间】:2015-08-31 08:02:02 【问题描述】:

我有一个具有此属性的 c# 互操作类:

decimal ImportoDocumento  [return: MarshalAs(UnmanagedType.Struct)] get; [param: MarshalAs(UnmanagedType.Struct)] set; 

在 vb6 中,它应该是 Variant/Decimal。 如果我尝试使用它,它会起作用。我可以分配一个值,我可以得到它的值。 问题是 vb6 智能感知不起作用。 我可以看到该类的其他属性,但不能看到 ImportoDocumento。 智能感知很重要,因为这个类是从其他人那里使用的。

我该怎么办?

谢谢

【问题讨论】:

【参考方案1】:

IntelliSense 中缺少该方法的原因是类型库导出器给您两个警告:

类型库导出器警告处理“ClassLibrary1.Class1.get_ImportoDocumento(#0), ClassLibrary1”。 警告:方法或字段的 ELEMENT_TYPE/NATIVE_TYPE 组合无效。

类型库导出器警告处理“ClassLibrary1.Class1.set_ImportoDocumento(value), ClassLibrary1”。 警告:方法或字段的 ELEMENT_TYPE/NATIVE_TYPE 组合无效。

无法为该属性生成正确的 TLB 信息,导出器将其完全省略,就好像您使用了 [ClassInterface(ClassInterfaceType.AutoDispatch)]。如果没有这些信息,该属性只能用于后期绑定,这就是它仍然有效的原因。

您需要 declare the property as Object 将其编组为 Variant。

【讨论】:

以上是关于vb6 中的智能感知不适用于 Interop 和 UnmanagedType.Struct [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Flutter VSCode 智能感知不适用于单文件包

Visual Studio 智能感知不适用于 DHTMLX 套件 5

VSCode/MinGW 智能感知不适用于 C++

Visual Studio 智能感知/自动更正适用于 C# 术语,但不适用于 Unity

模拟不适用于 Interop.MSClusLib

尝试使用 COM-interop 从 C# 库中附加 vb6 中的对象时,获取“无法将 'Field' 转换为 'Field' 类型(同一类)”