1

私は、プラグインが提供するAPIタイプライブラリを使用して、職場で使用するプログラムのプラグインを作成します。これは、SCAPIという名前のCOMオブジェクトです。COMオブジェクトはVB6用に作成されているため、.NET用に参照を追加すると、その相互運用バージョンが作成されます。

次のコードを使用すると、ドキュメントに従ってSAFEARRAY(Long)が返されるはずですが、SafeArrayTypeMismatchExceptionがあるというエラーが表示されます。

 Dim oBag As SCAPI.PropertyBag = tempModel.PropertyBag
 Dim x = oBag.Value("Created")

エラーは、私が書いたものではなく、COMオブジェクトの一部であるSCAPI.PropertyBagClass.get_Value(Object Property)関数からスローされています。私が行ったすべての調査の後、これを機能させるために何をする必要があるのか​​理解できないようです。tlbimp.exeを使用してメソッド情報を取得しましたが、文字列を返す同じ関数oBag.Value( "Name")を使用したにもかかわらず、[out]タグが含まれていないようです。値であり、エラーをスローしません:

 .method public hidebysig newslot specialname abstract virtual 
         instance object 
         marshal( struct) 
         get_Value([in] object  marshal( struct) Property) runtime managed internalcall
 {
 .custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = ( 01 00 01 00 02 60 00 00 )                         // .....`..
 } // end of method ISCPropertyBag::get_Value
4

0 に答える 0