Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WeakEventManager-未调用事件处理程序_C#_Event Handling_Weak Events_Weakeventmanager - Fatal编程技术网

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);