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

本文关键字:访问 对象 包含 引用 方法 | 更新日期: 2023-09-27 18:12:51

我需要知道是否有可能访问包含委托引用的方法的底层对象?

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

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

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

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 "";
    }
}

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