1
5
我确实认为你目前的实施是完全可以接受的。它非常清晰,易于理解。
然后你可以写:
|
2
1
您所做的很好,但我通常更喜欢取消订阅旧事件处理程序的约定 订阅新的事件,只是为了避免任何潜在的“重叠”,如果在调用之间从另一个线程触发相同的事件,两个对象可能会尝试处理相同的事件。 对于边际改进,您可以省去不必要的大括号,使代码更加紧凑和“整洁”(旁观者眼中的“整洁”)。 set { if (value != foo) { if (foo != null) foo.SomeEvent -= foo_SomeEvent; if (value != null) value.SomeEvent += foo_SomeEvent; foo = value; } } 如果您将使用空引用定为非法(例如,通过使用对“空Foo对象”的引用而不是空引用),那么您可以完全免除ifs: set { if (value != foo) { foo.SomeEvent -= foo_SomeEvent; value.SomeEvent += foo_SomeEvent; foo = value; } }
set { Helpers.SetValueAndResubscribeFooSomeEvent(ref foo, value); } |
3
0
如果您不知道已在事件上注册了哪些事件,并且希望完全清除它,则可以执行以下操作:
在SomeClass.Foo属性设置器中:
如果您确实知道被订阅的代理,那么您当前的解决方案很好。 |
code4cash · 声明了“string”,但从未读取其值 2 年前 |
Ren Jitsm · React useeffect显示组件安装2次 2 年前 |
Maria · 如何将DatePicker(@mui)值提升到父组件? 2 年前 |
Audiosleef · 根据搜索结果显示列表 6 年前 |
SamohtVII · 使用组件区域显示各种内容 6 年前 |
yhc44 · Vue。js组件父事件 6 年前 |
Chris · 在Vue中动态添加不同组件 6 年前 |