2009-04-22 5 views
3

私はこのクラスをしている:私は現在の名前空間で一緒に同じファイルでこれらを持ってC#:どこにイベントハンドラの代理人を配置する必要がありますか?

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

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

そして、それのために、このイベントハンドラデリゲート。それは悪い/乱雑な/等と考えられていますか?なぜなら、一般に、各ファイルには1つのクラスしか含まれていないと言います。ですから、それをきれいにするには、ファイル内にGenericEventArgsクラスを持つ方が好きです。しかし、私はこのGenericEventHandler<T>デリゲートを持っています。どこに置くべきか分かりません。独自のファイルを用意する必要がありますか?ちょうど...その一種のもので? (ともちろんの名前空間)

どのように通常これを行うのですか?

答えて

9

使用しない理由EventHandler<TEventArgs>?私は、私はますます稀である私自身のデリゲート型を(紹介したいときに私は、個人的にGenericEventArgs.cs

GenericEventArgsを置くところ、とにかく...そこ同等EventArgs<T>だったが、私は現時点ではそれを見ることができないと思いました正直言って)私はDelegates.csという名前空間の適切な代理人をすべて入れてファイルを作成します。そして、1つの宣言のためのファイルを持たずに、それらを見つける場所を知っています。

+0

実用的なアドバイス – Gishu

+0

デザイナーは、EventHandler >型のイベントをあまりうまく処理していないようです。たぶんそれは報告する必要があるバグです...(http://stackoverflow.com/questions/772036/c-event-not-showing-up-in-the-property-grid) – Svish

+0

デリゲートを作成しないでください。 cs。 これは必要のないコード間のカップリングを作成します。 –

1

まあ、私はそれ自身のファイルにGenericEventArgs<T>クラスを置くところは、他のすべてと同じ名前空間に

GenericEventArgs_T.csと呼ばれます。

そして、そのイベントが公開されるクラスにデリゲート(およびイベントがあればイベント)を配置します。

2

独自のイベントハンドラデリゲートを作成したいときは、自分のイベントハンドラデリゲートで使用したEventArgsクラスの名前を持つファイルを1つ作成していました。 たとえば 'MyEventArgs.cs'などです。

このファイルには、MyEventArgsクラスと、このクラスを使用したMyEventHandlerデリゲートが含まれていました。

しかし、私は既存の汎用EventHandler(EventHandler<T>)を使用しています。カスタムEventArgsクラスを作成するだけで済みます。だから、この「問題」は私のためにもう存在しません。 :)

-1

私はあなたがすでにやっていることをして、Delegates.csという名前の別の.csファイルにイベントに使用されていない代理人を置きます。

関連する問題