WeakEventManager 和静态事件
WeakEventManager and static event
我正在努力适应 WeakEventManager
,但我遇到了以下问题:
A
和B
的只有的区别是static
,请忽略copy/paste与[=15=的错误] ;)
我发现this answer regarding generics and static types, but I wonder what WeakEventManager
是干什么用A
呢?它可以以某种方式将 null
作为静态事件的来源。
我正在寻找一个简单的答案,为什么 static
事件正常,但 static class
因为 TEventSource
突然不正常。
代码:
public class A
{
public static event EventHandler Event;
}
public static class B
{
public static event EventHandler Event;
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
WeakEventManager<A, EventArgs>.AddHandler(null, nameof(A.Event), (s, e) => { });
WeakEventManager<B, EventArgs>.AddHandler(null, nameof(B.Event), (s, e) => { });
}
}
错误:
Error CS0718
'B': static types cannot be used as type arguments
WeakEventManager
可以处理静态事件,当source
为null:
object sourceKey = (source != null) ? source : StaticSource;
其中 StaticSource
是静态事件的特殊 "event source"。
这是 WeakEventManager
的实现细节,这就是它没问题的原因。
关于作为通用参数的静态类型 - 这是语言限制。它与 WeakEventManager
.
无关
我正在努力适应 WeakEventManager
,但我遇到了以下问题:
A
和B
的只有的区别是static
,请忽略copy/paste与[=15=的错误] ;)
我发现this answer regarding generics and static types, but I wonder what WeakEventManager
是干什么用A
呢?它可以以某种方式将 null
作为静态事件的来源。
我正在寻找一个简单的答案,为什么 static
事件正常,但 static class
因为 TEventSource
突然不正常。
代码:
public class A
{
public static event EventHandler Event;
}
public static class B
{
public static event EventHandler Event;
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
WeakEventManager<A, EventArgs>.AddHandler(null, nameof(A.Event), (s, e) => { });
WeakEventManager<B, EventArgs>.AddHandler(null, nameof(B.Event), (s, e) => { });
}
}
错误:
Error CS0718
'B': static types cannot be used as type arguments
WeakEventManager
可以处理静态事件,当source
为null:
object sourceKey = (source != null) ? source : StaticSource;
其中 StaticSource
是静态事件的特殊 "event source"。
这是 WeakEventManager
的实现细节,这就是它没问题的原因。
关于作为通用参数的静态类型 - 这是语言限制。它与 WeakEventManager
.