gpt4 book ai didi

c# - 如何让一个对象订阅另一个事件,同时保持两者松散耦合?

转载 作者:行者123 更新时间:2023-11-30 17:15:30 26 4
gpt4 key购买 nike

我有以下几段代码,在我看来,这些代码似乎是实现观察者模式所必需的基本要素。这是标准,还是我做错了什么?

public class LayoutManager
{
public CormantTimer Timer { get; set; }
}

protected void Page_Init(object sender, EventArgs e)
{
LayoutManager.Instance.Timer = RefreshAndCycleTimer;
}

public class CormantRadDock : RadDock, ICormantControl<RadDockSetting>
{
public CormantRadDock()
{
LayoutManager.Instance.Timer.TimerEvent += DoTimerRefreshTick;
}
}

CormantRadDock 对象是动态创建的。 RefreshAndCycleTimer 在页面上。

我担心,随着我的项目越来越大,LayoutManager 中会有大量不相关的控件——只是在那里订阅。这是标准吗?我应该做些不同的事情吗?

谢谢

最佳答案

如果您想要松散耦合的消息传递,请不要使用事件,请使用 EventAggragator。 Caliburn.Micro 有一个不错的。

http://devlicio.us/blogs/rob_eisenberg/archive/2011/05/30/caliburn-micro-soup-to-nuts-part-8-the-eventaggregator.aspx

EventAggregator 是一种中介类型模式,它允许发布者和订阅者通过中介工作,从而实现松散耦合的交互。发布者和订阅者不需要相互了解。

寻找使用“弱引用”的 EventAggregator 来克服事件类型模式的经典问题,即 GC 内存泄漏。 Caliburn 正是这样做的。

关于c# - 如何让一个对象订阅另一个事件,同时保持两者松散耦合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7960449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com