4
我需要从一个VB6应用程序传递一个int或长的数组(无所谓)到一个C#COM Visible类。我试着声明在C#中的接口是这样的:如何从VB6传递一个长数组到C#通过COM
void Subscribe([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_I4)]int[] notificationTypes)
void Subscribe(int[] notificationTypes)
但是他们都提出了Function or interface markes as restricted, or the function uses an Automation type not supported in Visual Basic
。
我该如何声明C#方法?
嗯,这很奇怪。只要删除[MarshalAs],这个数组已经在没有你帮忙的情况下作为SAFEARRAY编组了。如果仍有问题,我们需要查看其余的接口类型。 – 2012-07-13 12:45:02
@HansPassant是的,我查看了生成的IDL,因为它在两种情况下都正确地声明为SAFEARRAY(long),所以我认为它必须是与VB6相关的问题。我仍在调查。 – 2012-07-13 13:38:35