<分区>
我尽量坚持 Framework Design Guidelines即使在设计仅供内部使用的类库时也是如此。
在某种程度上,它让我的生活更轻松,因为我使用代码分析来自动检查我可能没有使用最佳实践的地方。
但在这种情况下,我不得不忽略这些建议。
由于 EventArgs 约束已从 .NET 4 中的 EventHandler 中删除,为什么现在有人想要使用从 EventArgs 派生的类(如 https://msdn.microsoft.com/en-us/library/ms229011(v=vs.110).aspx 中规定)而不是直接使用所需的数据类型并避免分配成本另一个对象并在其中嵌入所需的数据?
例如,必须编写以下内容:
public class ExceptionEventArgs : EventArgs
{
private readonly Exception _exception;
public ExceptionEventArgs(Exception exception)
{
_exception = exception;
}
public Exception Exception
{
get
{
return _exception;
}
}
}
public event EventHandler<ExceptionEventArgs>;
更加冗长,因为需要额外分配而不是:
public event EventHandler<Exception>;
几周前我什至创建了一个通用的 EventArgs 用于另一个类,但我觉得这样做很愚蠢只是为了遵守指南。
public class EventArgs<T> : EventArgs
{
private readonly T _data;
public EventArgs(T data)
{
_data = data;
}
public T Data
{
get
{
return _data;
}
}
}
那么,使用
有什么缺点吗?EventHandler<NotAnEventArgsDerivedClass>
仅供内部*使用的类?
*我的意思是,用于由多个组件组成的产品 - 所有组件均专供产品本身使用。