私はCOM VB6ライブラリに.NET配列を渡そうとしています。 VB6オブジェクトのCOMラッパーであるオブジェクトがあります。これは、次のシグネチャを持つメソッドがあります。VB6にCOMオブジェクトのC#配列を渡す
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType = MethodCodeType.Runtime)]
void AddEx([MarshalAs(UnmanagedType.Struct)] object vSafeArrayOfItems);
をしかし、私はそれを呼び出すとき、私は、次のメッセージとArgumentException
を得る:
値が予想される範囲内に収まっていません。
例外の種類とその説明は、渡された要素にも依存しません。
誰もこの問題を回避する方法を知っていますか?
UPD:.NETラッパーアセンブリと参照元の.COMライブラリを削除しました。変化はなかった。
[MarshalAs]属性が明らかに間違っている:あなたはどうなる配列を渡したい場合は
(オブジェクトは、構造体は、異なる方法で処理され、クラスです)。 –
合意。 @ user1453239なぜそれが構造体だと思いましたか? – tcarvin
この宣言は、私が使用しようとしているライブラリからのものです。サードパーティ開発者によって提供されます。 –