2013-05-08 82 views
3

我需要知道是否可以訪問包含委託引用的方法的底層對象?從包含引用方法的委託訪問對象

我知道該對象是在委託中捕獲的,因爲它在調用該方法時是必需的。

+0

我不太確定該對象的實例是否在委託中被捕獲(我認爲您的意思是委託對象具有對該對象的引用) - 如果是,那麼爲什麼您需要將它傳入何時調用委託? – GHC 2013-05-08 10:03:18

回答

5

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

我不知道你想什麼來實現這一點,但需要了解的是正在履行一個代表的參考可能是一個代碼氣味或設計問題的指標目標類型。

相關問題