0

オブジェクトのメソッドを呼び出す必要がありますが、実行時までメソッド名がわかりません。

利用可能なテクニックは何ですか?

(例: GetMethod().Invoke()、デリゲート、c# 4.0 動的)

ありがとう!

4

2 に答える 2

2

C# 4.0 のdynamic機能は、これを行う最も簡単な方法です。本当の意味で、dynamicReflection の「単なるラッパー」です。これは非常に優れたラッパーですが、おそらく最良の選択肢です。

他の方法では、おおよそ難易度が上がります:

  • サードパーティの Reflection ライブラリを使用します。最近何があるかわかりません。
  • 独自の Reflection コードを記述します。
  • CodeDOM を使用して、呼び出したいメソッドを呼び出すコードを作成します。
  • CodeDOM で生成されたコードとほとんど同じことを行う IL を生成します。
  • C# ソース コードを作成し、それをコンパイルして呼び出し可能なアセンブリにします。これにより、目的のメソッドが呼び出されます。

最後の 3 つは気弱な人向けではありません。最善の策はdynamic、独自の Reflection コードを使用または作成することです。dynamic3 年前に似たようなコードを書いていたら、それを使っていたでしょう。

于 2010-12-14T20:06:44.803 に答える
0

Reflection を使用して、実行時まで名前がわからない関数を呼び出すことができます。ここにいくつかのドキュメントがあります:

http://msdn.microsoft.com/en-us/library/f7ykdhsy%28VS.80%29.aspx

于 2010-12-14T18:31:32.623 に答える