C# WeakEventManager-未调用事件处理程序
我无法重现这个问题(项目太大,无法在这里发布,加上我不确定要发布哪些相关部分),我需要了解这里可能出现的问题 我有一个带有静态事件的抽象类C# WeakEventManager-未调用事件处理程序,c#,event-handling,weak-events,weakeventmanager,C#,Event Handling,Weak Events,Weakeventmanager,我无法重现这个问题(项目太大,无法在这里发布,加上我不确定要发布哪些相关部分),我需要了解这里可能出现的问题 我有一个带有静态事件的抽象类 public abstract partial class A : Base { public static event EventHandler Test; public static void OnTest() => Test?.Invoke(null, EventArgs.Empty); } 然后我正常订阅此事件,并使用Weak
public abstract partial class A : Base
{
public static event EventHandler Test;
public static void OnTest() => Test?.Invoke(null, EventArgs.Empty);
}
然后我正常订阅此事件,并使用WeakEventManager
:
A.Test += (s, e) => { };
WeakEventManager<A, EventArgs>.AddHandler(null, nameof(A.Test), (s, e) => { });
A.Test+=(s,e)=>{};
WeakEventManager,在那里找到答案,但是有ProtectedAddHandler
我找不到的来源。。。
我找到了,但下一步是什么?抽象方法,是谁实现的
WeakEventManager
。。。事件处理程序不工作
对于任何面临此问题的人来说,问题在于:您必须以发送方的身份引发静态事件,并将设置为null
!例如,在我的案例中,它是(用这个来重现问题中的代码问题):
此案例将由普通订户处理,不会出现任何问题
但是在WeakEventManager
的情况下,它必须是null
(特殊情况),否则您的事件处理程序将无法工作
你在说什么抽象方法?ProtectedAddHandler和AddHandler都不是抽象的。若要调试该问题,我将向subscriber类添加一个终结器,它将输出一条调试消息,通知何时完成。
public static void OnTest() => Test?.Invoke("whatever", EventArgs.Empty);