2011-01-09 1 views
1

4.0の 'dynamic'変数にMarshal.ReleasComObjectを使用する必要がありますか?私は、次のC#のコードを持っている

int CallFooMethod() 
{ 
    Type type = TypeDelegator.GetTypeFromProgID("SomeCOMDll.SomeCOMClass"); 

    dynamic foo = Activator.CreateInstance(type); 

    return (int)foo.Foo(); 
} 

私の質問は、私は、変数fooという名前でMarshal.ReleaseComObjectを使用する必要がありますか?

COMオブジェクトのメソッドを呼び出すために通常の方法でリフレクションを使用していたのであれば、これを行うのが普通ですが、ダイナミックは遅延バインディングとマジックに関するものなので、dynamic型の変数が私にとって、この...

おかげ

答えて

0

You shouldn't call it at all in most situtations、あなたが本当に何をやっている知っている限りでは。

dynamicは違いはありません。 dynamicは、オブジェクトのメソッドを呼び出す方法とはまったく異なります。オブジェクトにはまったく影響しません。

+0

私は上記のリンクを読んで、私の状況には当てはまらないと思います。 – Wes

+0

私はCOM InteropアセンブリまたはRCWを使用していません。少なくとも、これを行うためのコンパイラオプションで生成されたものはありません。どちらかが忘れてしまいます。 私の場合、私はそれを作成し、私はオブジェクトの寿命を明示的に制御したい、 :私はそれができるだけ早くガベージコレクションまで待たずに行くようにしたい。 – Wes

+0

@Wes: 'dynamic'は何の違いもありません。メソッドの実行を制御するだけです。 – SLaks

関連する問題