2011-12-22 10 views
0

を経由してC#でデリゲートに静的メソッドを割り当てないと、次のコードを考えてみましょう:どのように私は反射

internal delegate object FactoryMethod(); 

は今、私は次のコードを持っていると言う:

String myStaticMethod = "FooFactory.GetInstance()"; 

私は次のことをどのように行うのですか?

FactoryMethod myMethod = //A delegate pointing to FooFactory.GetInstance() 

私は離れグーグルんだけど、私はきれいな例や静的メソッドを扱う少なくとも一つを見つけるように見えることはできません。

+1

本当にこれが反映されていますか? –

+0

私は何かを反映しているわけではありませんが、文字列を介してクラスのインスタンスを作成するなど、標準外のコードに作業をしているときに、それをリフレクションと呼びます。 –

答えて

-1

私はこれを見つけた:

typeof(YourClass).GetMethod("GetInstance", BindingFlags.Public | BindingFlags.Static); 
4

Delegate.CreateDelegateのオーバーロードのいずれかを使用します。可能な方法の1つは次のとおりです。

var className = "FooFactory"; 
var methodName = "GetInstance"; 
var implType = Type.GetType(className); 
var implMethod = implType.GetMethod(methodName, new Type[0]); 
var res = Delegate.CreateDelegate(typeof(FactoryMethod), implMethod);