2009-04-22 60 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文件中。

相關問題