Tag: weakeventmanager

为什么WeakEventManager在发件人不是名义上时不会触发事件?

我不喜欢不合标准的模式,但我正在对我的应用程序进行快速测试,我遇到了这种奇怪的行为。 考虑一个暴露事件的普通类,这里是非常常见的PropertyChanged,但我认为可能是其他任何一个。 订户选择通过WeakEventManager帮助程序订阅事件。 现在,“奇怪”的东西是实际的发送者引用:只要实例与订阅上使用的实例相同,一切都很顺利。 但是,当您使用其他对象时,不会发出通知。 同样,这不是一个好的模式,但我想知道这个限制是否有任何好的理由,或者说这是一种错误。 更多的是好奇心而不是真正的需求。 class Class1 { static void Main(string[] args) { var c = new MyClass(); WeakEventManager.AddHandler( c, “PropertyChanged”, Handler ); c.ActualSender = c; c.Number = 123; //will raise c.ActualSender = new Class1(); c.Number = 456; //won’t raise Console.ReadKey(); } static void Handler(object sender, PropertyChangedEventArgs e) { Console.WriteLine(“Handled!”); } } class […]