我有多个级别的嵌套类。我需要一种更好的方法来通过向嵌套堆栈发送值来通知我的父类。
为了扩展上述内容,在我的内部类中,我有一个异步方法调用。现在我需要在我的异步方法完成执行后通知我的父类。有没有办法可以使用Action获取值?
由于
答案 0 :(得分: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();
任何类都可以订阅此内容,并在发生事件时收到通知。你如何处理那个观察者完全取决于你。它可以通过调用堆栈传递,也可以从工厂或其他一些可访问的类中获得。