2011-06-22 4 views
7

単純な場合:私は反射によってAnotherClass.MyAction(..)方法及びMyClass.MyActionデリゲートの両方を取得するように、IはI METHODINFO /のFieldInfoクラス一対のフックアップデリゲートフィールドにMETHODINFO(のFieldInfo)

public class MyClass 
{ 
    public Action<double> MyAction; 
} 

public class AnotherClass 
{ 
    public void MyAction(double value) 
    { 
    // ... 
    } 
} 

を終わりますメソッドをデリゲートに接続することはできません。また、私は両方のメソッド/代理人の名前を文字列から取得、私はリフレクションなしでインスタンスのフィールド/メソッドにアクセスすることはできません。誰も私にこの手を差し伸べることはできますか、あるいはこのような結びつきはまったく可能ですか?あなたは特に、Delegate.CreateDelegateをご覧ください

答えて

8

MethodInfo method = typeof(AnotherClass).GetMethod("MyAction"); 
FieldInfo field = typeof(MyClass).GetField("MyAction"); 


AnotherClass obj = // the object you want to bind to 

Delegate action = Delegate.CreateDelegate(field.FieldType, obj, method); 

MyClass obj2 = // the object you want to store the delegate in 

field.SetValue(obj2, action); 
+1

本当に速い、と甘く作品でした。助けてくれてありがとう。 –

関連する問題