我正在做一个将 vb6 与加密包装器通信的应用程序。到目前为止,.net 和互操作部分一切正常,完全正常工作。
当我的客户正在测试它时,我有一个简单的问题:
[ComVisible(true)]
public SomeObjectComVisible GetThat(byte[] array){ ... }
到目前为止,我使用的是暴露给 com 的类型或 int 和 string,到目前为止没有任何问题。
可以使用(.net)吗byte
或者我应该使用*char
?
当我将程序集标记为可见并注册到 com 互操作时,它会为其创建一个包装器,还是应该使用某种非托管类型?
啊,这是一个vb6,而不是vbscript。
太感谢了
对于那些寻求答案的人:
public SomeObjectComVisible GetThat([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]byte[] array)
问题出在数组上。http://msdn.microsoft.com/en-us/library/z6cfh6e6.aspx http://msdn.microsoft.com/en-us/library/z6cfh6e6.aspx
and
http://msdn.microsoft.com/en-us/library/75dwhxf7.aspx http://msdn.microsoft.com/en-us/library/75dwhxf7.aspx
任何不可位的类型都可能是一件苦差事。您可以指定自己的类型,以便使用它们,您只需使用
[ComVisible(true),
ClassInterface(ClassInterfaceType.None),
ProgId("SomeNamespace.SomeClass"),
Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
在班级中名列前茅
非常感谢大家。
很有帮助