2013-05-08 2 views
3

대리자가 참조하는 메서드가 포함 된 기본 개체에 액세스 할 수 있는지 알아야합니까?참조 된 메서드가 포함 된 대리자의 개체에 액세스

개체를 메서드를 호출 할 때 필요하기 때문에 대리자에서 개체를 캡처 한 것으로 알고 있습니다.

+0

개체의 인스턴스가 대리자에 캡처 된 것은 아닙니다 (위임자가 개체에 대한 참조를 가지고 있다는 것을 의미하는 것으로 추정 됨). 그렇다면 왜 전달해야합니까? 델리게이트를 부를 때? – GHC

답변

5

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

난 당신이 달성하려고 노력하지만, 코드 냄새 또는 설계 문제의 지표가 될 수있는 대리자 기준을 충족하는 대상 유형에 대해 알 필요가 무엇 확실하지 않다.

관련 문제