5

intまたはlong(関係ありません)の配列をVB6アプリケーションからC#COMVisibleクラスに渡す必要があります。私は次のようにC#でインターフェイスを宣言しようとしました:

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#メソッドをどのように宣言する必要がありますか?

4

2 に答える 2

1

やむを得ない場合は、署名をダミーの VB6 ActiveX dll プロジェクトにコーディングします。次に、Visual Studio またはコマンド ライン ツールを使用して、vb6 コンポーネントの .NET Interop バージョンを生成します。次に、Reflector または dotPeek を使用して、コードを相互運用アセンブリから引き出します。それは長い道のりですが、うまくいきます。

于 2012-07-13T15:47:11.100 に答える