3

デリゲートによって参照されるメソッドを含む基になるオブジェクトにアクセスできるかどうかを知る必要がありますか?

I know that the object is captured in the delegate because it is required when invoking the method.

4

1 に答える 1

5

Aはその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 "";
    }
}

これで何を達成しようとしているのかはわかりませんが、デリゲート参照を満たしているターゲット型について知る必要があるということは、コードの匂いや設計上の問題の兆候かもしれません。

于 2013-05-08T10:04:27.147 に答える