使用
C#
ref
parameter modifier
:
var handler = new SomeEventHandler(MyHandler);
Wire(ref myObject.SomeEventDelegate, handler);
private void Wire(ref Delegate eventDelegate, Delegate handler)
{
eventDelegate = Delegate.Combine(eventDelegate, handler);
}
还要注意,存在一些很好的语法结构(如c 2.0),用于分配和组合委托(请参见
this article
例如:
Wire(ref myObject.SomeEventDelegate, MyHandler);
private void Wire(ref Delegate eventDelegate, Delegate handler)
{
eventDelegate += handler;
}
有人向我指出
裁判
只适用于字段,而不适用于属性。对于属性,可以使用中间变量:
var tempDelegate = myObject.SomeEventDelegate;
Wire(ref tempDelegate, MyHandler);
myObject.SomeEventDelegate = tempDelegate;