从包含引用方法的委托访问对象

时间:2013-05-08 10:00:46

标签: c#

我需要知道是否可以访问包含委托引用的方法的基础对象?

我知道该对象是在委托中捕获的,因为在调用方法时需要它。

1 个答案:

答案 0 :(得分:5)

Delegate引用它的目标。当然,静态方法没有目标,因此可能需要进行空检查。

class Program
{
    static void Main(string[] args)
    {
        var container = new Container();

        Func<string> doSomething = container.DoSomething;

        Delegate d = doSomething;

        // This will be the container, but you need to cast.
        var c = (Container)d.Target;

        Console.Read();
    }
}

class Container
{
    public string DoSomething()
    {
        return "";
    }
}

我不确定你要用这个来实现什么,但需要知道实现委托引用的目标类型可能是代码气味或设计问题的指示。