【发布时间】:2011-05-24 09:00:31
【问题描述】:
反对使用代理 System.Action 或 System.Func 作为 EventDelegates 而不是经典的 EventHandler 模式。我会因此遇到问题吗?
private bool disposed;
public event Action<IUnitOfWork, IContext> Disposing;
public void Dispose()
{
if (this.disposed)
{
return;
}
if (null != this.Disposing)
{
this.Disposing(this, this.AttachedContext);
}
this.disposed = true;
}
用法:
unitOfWorkInstance.Disposing += (u, c) => c.Rollback(u); // in my opinion more readable than
unitOfWorkInstance.Disposing += (sender, args) => args.AttachedContext.Rollback(sender as IUnitOfWork);
【问题讨论】:
-
Dispose 方法 [...] 应该可以多次调用而不会引发异常。 msdn.microsoft.com/en-us/library/b1yfkh5e(v=VS.100).aspx
-
非常感谢您的提示。在这种情况下,我将异常替换为简单的返回。
-
虽然这是有创意的 (+1),但我看不出它解决了什么问题。一方面,
disposingInternal的定义不是仍将是代表吗...您(故意?)将其从代码 sn-p 中删除,所以也许您会让我感到惊讶
标签: c# .net action event-handling func