我有这堂课:
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>
代表我不知道应该放在哪里。它应该有自己的文件吗?只有...那一行? (当然还有命名空间)
你通常如何做到这一点?
答案 0 :(得分:9)
没有使用EventHandler<TEventArgs>
的原因?我认为有一个等价的EventArgs<T>
但我目前看不到它......无论如何,我将GenericEventArgs
放入GenericEventArgs.cs
就个人而言,当我想介绍我自己的委托类型时(实际上这种情况越来越少见),我创建了一个Delegates.cs
文件,其中包含所有适当的委托名称。然后我知道在哪里找到它们没有单一声明的文件。
答案 1 :(得分:2)
当我想创建自己的eventhandler委托时,我曾经创建了一个文件,其中包含我在自己的eventhandler委托中使用的EventArgs类的名称。 例如'MyEventArgs.cs'。
该文件包含MyEventArgs类和使用此类的MyEventHandler委托。
现在,我使用现有的通用EventHandler(EventHandler<T>
),我只需创建自定义的EventArgs类。所以,这个'问题'不再存在了。 :)
答案 2 :(得分:1)
好吧,我将GenericEventArgs<T>
类放在它自己的名为
GenericEventArgs_T.cs与其他所有命名空间相同。
我会把你的代表(以及有事件的事件)放在将要公开该事件的类中。
答案 3 :(得分:-1)
我会做你正在做的事情,然后将所有未用于事件的代理放在一个名为Delegates.cs的单独的.cs文件中或类似的东西。