4

我有这堂课:

public class GenericEventArgs<T> : EventArgs
{
    public GenericEventArgs() : this(default(T)) {}
    public GenericEventArgs(T value) { Value = value; }
    public T Value { get; private set; }
}

这个事件处理程序委托它:

public delegate void GenericEventHandler<T>(object sender, GenericEventArgs<T> e);

我目前将这些放在同一个文件中的名称空间中。这被认为是坏的/凌乱的/等等吗?原因,一般来说,我会说每个文件应该只包含一个类。所以为了让它干净,我宁愿把这个GenericEventArgs类单独放在文件中。但是后来我有这个GenericEventHandler<T>代表,我不确定我应该放在哪里。它应该有自己的文件吗?就...那一行?(当然还有命名空间)

你通常是怎么做的?

4

4 回答 4

10

有什么理由不使用EventHandler<TEventArgs>?我认为有一个等价物EventArgs<T>,但我现在看不到它......无论如何,我会GenericEventArgs输入GenericEventArgs.cs

就个人而言,当我想介绍我自己的委托类型(说实话,这种情况越来越少)时,我会创建一个Delegates.cs文件,其中包含命名空间的所有适当委托。然后我知道在哪里可以找到它们,而无需为单个声明创建文件.

于 2009-04-22T08:57:26.133 回答
2

当我想创建自己的事件处理程序委托时,我曾经创建一个文件,该文件具有我在自己的事件处理程序委托中使用的 EventArgs 类的名称。例如“MyEventArgs.cs”。

该文件包含 MyEventArgs 类和使用此类的 MyEventHandler 委托。

然而,现在我使用现有的通用 EventHandler ( EventHandler<T>),我只需要创建我的自定义 EventArgs 类。所以,这个“问题”对我来说不再存在。:)

于 2009-04-22T08:57:23.327 回答
1

好吧,我会把这个GenericEventArgs<T>类放在它自己的文件中,叫做

GenericEventArgs_T.cs 在与其他所有内容相同的命名空间中。

而且我会将您的代表(如果有的话,还有事件)放在将要公开该事件的类中。

于 2009-04-22T08:57:06.773 回答
-1

我会做您已经在做的事情,然后将所有未用于事件的委托放在一个名为 Delegates.cs 或类似文件的单独 .cs 文件中。

于 2009-04-22T09:39:05.597 回答