我应该按照事件模式进行内部事件吗?

时间:2009-03-31 16:27:13

标签: c# .net

我理解将EventHandler / EventArgs模式用于事件的优点,但它会增加很多开销。

public class FooBarEventArgs : EventArgs
{
  public int Arg1 { get; set; }
  public string Arg2 { get; set; }
}

public event EventHandler<FooBarEventArgs> FooBar;

你会破坏内部事件的事件模式吗?

internal event Action<int, string> FooBar;

或者直接公开代表会更好吗?

internal Action<int, string> FooBar;

4 个答案:

答案 0 :(得分:4)

我认为坚持共同模式始终是最佳选择。即使它引入了开销,将来也会更容易理解和维护代码。你永远不知道谁将最终维护你的代码,你不会使用这样的“快捷方式”来帮助他/她。

答案 1 :(得分:2)

考虑到它并不是那么多开销。另请注意,属性名称将为调用者提供额外信息,这是使用Action委托时没有的内容。

答案 2 :(得分:1)

这取决于很多事情。

  • 粒度:这些内部事件与外部事件的规模是相同的,还是更小/更原始/更频繁?
  • 可混合性:这些内部事件是否与外部事件相同,因此在概念上将它们混合起来是有意义的?
  • 支持:您是否正在使用您想要应用于内部事件的事件循环(登录,撤消等)的任何支持功能?

正如你所看到的,没有一个明确的正确答案;这取决于你的意图,以及它们如何适应整个应用程序。

答案 3 :(得分:1)

我相信不遵循常规活动&amp;事件处理模式(使用EventHandler / EventHandler)将抛出FxCop / StyleCop违规。如果静态代码分析,可读性和代码质量对您/您的项目很重要,那么您应该坚持使用常规事件模式。