我相当确信这是不可能的,但我仍然会问。单次活动订阅
为了使单次认购活动,我经常发现自己使用这个(自己发明)模式:
EventHandler handler=null;
handler = (sender, e) =>
{
SomeEvent -= handler;
Initialize();
};
SomeEvent += handler;
这是相当多的锅炉板,并且这也使得ReSharper的关于修改后的关闭声。有没有将这种模式转换为扩展方法或类似方法的方法?一个更好的方法呢?
理想情况下,我想是这样的:
SomeEvent.OneShot(handler)
我看不出为什么你不能把样板代码放入扩展方法。或者我没有得到这个问题? – Achim 2011-04-11 15:33:23
你如何通过取消订阅事件?它有一个共同的基础类型吗?不是代表值类型(即,如果您以某种方式传递事件,则处理副本) – spender 2011-04-11 15:34:21
@spender:所有代表都是引用类型。 – 2011-04-11 15:37:25