2009-04-22 66 views
3

我有这个类:C#:你应该在哪里放置事件处理程序委托?

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类。但后来我有这个代表,我不知道我应该放在哪里。它应该有它自己的文件吗?只用...那种线路? (和命名空间当然)

你通常如何做到这一点?

回答

9

任何不使用EventHandler<TEventArgs>的原因?我觉得有一个等效EventArgs<T>,但我无法看到它的那一刻......反正,我把GenericEventArgsGenericEventArgs.cs

个人而言,当我想介绍一下我自己的委托类型(这是越来越少见,说实话)我创建了一个Delegates.cs文件,其中包含名称空间的所有合适代表。然后,我知道无需为单个声明提供文件即可找到它们。

+0

实用建议 – Gishu 2009-04-22 09:35:56

1

那么我把GenericEventArgs<T>类中,它被称为

GenericEventArgs_T.cs在相同的命名空间一切自己的文件。

而且我会把你的委托(和事件,如果有的话)放在将会暴露该事件的类中。

2

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

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

但是,现在我使用现有的通用EventHandler(EventHandler<T>),并且我只需创建自定义的EventArgs类。所以,这个'问题'不再适用于我。 :)

-1

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

相关问题