2014-02-15 34 views
0

我有多層嵌套類。我需要一個更好的方法通過向嵌套堆棧發送一個值來通知父類。.Net - 使用Action/Delegate傳遞數據備份導航堆棧

爲了擴展上述內容,在我的內部類中我有一個異步方法調用。現在我需要在我的異步方法完成執行後通知我的父類。有什麼方法可以使用Action來獲得價值?

感謝

回答

1

而不是試圖傳遞價值「的堆棧」(這將變得非常凌亂,非常快),我可能會建議你實現某種您選擇的Observer或其他事件模式,並有父母會自動通過魔術般的通知,並避免嘗試將值返回父級「堆棧」?

舉一個簡單的例子,我會假設你目前的困境是類似於此:

public void DoSomething(Action callback) 
{ 
    DoSomethingElse(callback); 
} 

public void DoSomethingElse(Action callback) 
{ 
    WeMustGoDeeper(callback); 
} 

public void WeMostGoDeeper(Action callback) 
{ 
    // I have no idea who I am anymore. 
} 

這將是更好的實現甚至一個簡單的觀察者/事件系統。從本質上說你有一些那種引發事件的觀察者(注:這是非常簡單):

public class Observer 
{ 
    public delegate void SomethingHappenedDelegate(); 

    public void NoReallySomethingHappened() 
    { 
     if(SomethingHappened != null) 
      SomethingHappened(); 
    } 

    public event SomethingHappenedDelegate SomethingHappened; 
} 

你最好的地方創建這個類的一個實例,你最後函數需要做一些事情沿着線:

whateverTheObserver.NoReallySomethingHappened(); 

任何類可以訂閱這個當事情發生的通知。你如何處理觀察者完全取決於你。它可以傳遞給調用堆棧,也可以從工廠或其他可訪問的類中獲得。

+0

您能否爲我擴展上述實現?我對此很新。謝謝! – user3313677