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