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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 智能感知不适用于 DHTMLX 套件 5
Visual Studio 智能感知/自动更正适用于 C# 术语,但不适用于 Unity
尝试使用 COM-interop 从 C# 库中附加 vb6 中的对象时,获取“无法将 'Field' 转换为 'Field' 类型(同一类)”