1

C# からサードパーティの COM ライブラリを使用しています。

VARIANT 型 (VT_BSTR 型) のパラメーターを受け取る get/set メソッドがあります。.NET ラッパーでは、これらのパラメーターは type として表示されますobject

object getValue();
void setValue( object val );

getValue メソッドは問題なく動作します。オブジェクトを文字列型に単純にキャストします。

string str = (string)comObject.getValue();

しかし、同様の方法で文字列を設定しても、次のことはできません。

string str = "test";
comObject.setValue( str );

サードパーティのライブラリはこれを好まず、例外を生成します。VT_BSTR 型の VARIANT を想定している必要があります (これはネイティブ C++ から機能するため)。私の質問は、C# でこれらのいずれかを作成するにはどうすればよいですか?

私は のようなメソッドを見てきましたがMarshal.GetNativeVariantForObject、これの正しい使用法に関するドキュメントは地上では少し薄いように見えるので、サンプルコードは役に立ちます.

4

1 に答える 1

3

BStrWrapperクラスを使用します。

comObject.setValue(new BStrWrapper(str));
于 2009-10-08T16:28:03.893 に答える