0
我有多層嵌套類。我需要一個更好的方法通過向嵌套堆棧發送一個值來通知父類。.Net - 使用Action/Delegate傳遞數據備份導航堆棧
爲了擴展上述內容,在我的內部類中我有一個異步方法調用。現在我需要在我的異步方法完成執行後通知我的父類。有什麼方法可以使用Action來獲得價值?
感謝
我有多層嵌套類。我需要一個更好的方法通過向嵌套堆棧發送一個值來通知父類。.Net - 使用Action/Delegate傳遞數據備份導航堆棧
爲了擴展上述內容,在我的內部類中我有一個異步方法調用。現在我需要在我的異步方法完成執行後通知我的父類。有什麼方法可以使用Action來獲得價值?
感謝
而不是試圖傳遞價值「的堆棧」(這將變得非常凌亂,非常快),我可能會建議你實現某種您選擇的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();
任何類可以訂閱這個當事情發生的通知。你如何處理觀察者完全取決於你。它可以傳遞給調用堆棧,也可以從工廠或其他可訪問的類中獲得。
您能否爲我擴展上述實現?我對此很新。謝謝! – user3313677