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
、これの正しい使用法に関するドキュメントは地上では少し薄いように見えるので、サンプルコードは役に立ちます.