gpt4 book ai didi

.net - 使用 .NET 的 WeakEventManager 实现弱事件的示例

转载 作者:行者123 更新时间:2023-12-03 10:40:17 25 4
gpt4 key购买 nike

是否有使用 .NET 的 WeakEventManager 实现弱事件的示例? ?

我正在尝试按照文档中的“继承者说明”来实现它,但它是模糊的。例如,我不知道如何调用 ProtectedAddListener来自我的静态 AddListener在我的自定义管理器中运行。

最佳答案

我是按照 WeakEventManager 的“继承者须知”部分中的指南自行解决的。文档。这是 WeakEventManager 的基本实现.产生事件的类被命名为 PropertyValue并且事件被命名为 Changed .

public class PropertyValueChangedEventManager : WeakEventManager
{
public static PropertyValueChangedEventManager CurrentManager
{
get
{
var manager_type = typeof(PropertyValueChangedEventManager);
var manager = WeakEventManager.GetCurrentManager(manager_type) as PropertyValueChangedEventManager;

if (manager == null)
{
manager = new PropertyValueChangedEventManager();
WeakEventManager.SetCurrentManager(manager_type, manager);
}

return manager;
}
}

public static void AddListener(PropertyValue source, IWeakEventListener listener)
{
CurrentManager.ProtectedAddListener(source, listener);
}

public static void RemoveListener(PropertyValue source, IWeakEventListener listener)
{
CurrentManager.ProtectedRemoveListener(source, listener);
}

protected override void StartListening(object source)
{
((PropertyValue)source).Changed += DeliverEvent;
}

protected override void StopListening(object source)
{
((PropertyValue)source).Changed -= DeliverEvent;
}
}

关于.net - 使用 .NET 的 WeakEventManager 实现弱事件的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3524597/

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