将方法传递给另一个方法

时间:2012-12-14 17:54:13

标签: c# reflection

我希望能够在另一种方法中指定方法。

这样的东西
public class Binder
{
    public void Bind(whatShouldIWriteHere?)
    {
        // do stuff with the MethodInfo
    }
}

所以我可以这样做:

public class A
{
    public void DoIt(string tmp)
    {
    }
}

var binder = new Binder()
binder.Bind<A>(x => x.DoIt);

而不是:

var method = typeof(A).GetMethod("DoIt");
binder.Bind(method);

这可能吗? :)

1 个答案:

答案 0 :(得分:2)

将该方法作为委托传递,并使用Delegate.Method属性。

在你的情况下,Binder.Bind就像:

public void Bind(Delegate del)
{
    var info = del.Method;
    //Add your logic here.
}

并将方法传递给它:

var binder = new Binder();
var instance = new A();
binder.Bind(new Action<string>(instance.DoIt))
相关问题