2012-04-26 7 views
1

ここにカスタムイベントargsのコードを示します。私はそれらの使用についても、それらの役割についても混乱しています。私は、このプロパティを理解することはできませんpublic object AddedObject { get; private set; }コードはここにある:私は、getを使用すると、追加したオブジェクトのプロパティセットを理解することはできませんカスタムイベントargの使用は何ですか?

public class ObjectAddedEventArgs : EventArgs 
{ 
    public ObjectAddedEventArgs(object addedObject) 
    { 
     AddedObject = addedObject; 
    } 

    public object AddedObject { get; private set; } 
} 

。私に説明してください。 Microsoft's documentation 1として

答えて

0

のEventArgsは、イベントデータを含むクラスの基本クラスです。

....

このクラスには、イベント・データが含まれていません。 イベントが発生したときにイベントハンドラに状態情報を渡さないイベントによって使用されます。 イベントハンドラが状態情報を必要とする場合、アプリケーションはこのクラスからデータを保持するクラスを派生させなければなりません( )。言われ、そのクラスの元の開発者がイベントを処理することを意図し、同時にイベントハンドラメソッドへのオブジェクトAddedObjectを利用可能にすること

。良い例については上記のウェブサイトを参照してください。

+0

EventArgsから派生するのはコンパイラでは必要ありませんが、マイクロソフトのスタイルガイドラインによって強く推奨されています。 –

+0

@ダンブシャあなたが正しいです、それから派生する必要はありません。しかし、イベントハンドラに状態情報を持たせたい場合に備えて、そうすることをお勧めします。 – Ulises

+0

私が言うことは、EventArgsから派生しても状態を問わずオブジェクトを使用して状態をイベントに渡すことができるということですが、慣例的にはそうする必要があります。 –

1

プロパティは「自動プロパティ」と呼ばれ、C#コンパイラがプロパティの値を保持するプライベート変数を生成することを意味します。 「取得」は、プロパティの値を読み取るためのメカニズムです。 「セット」は、プロパティの値を設定できるメカニズムですが、この場合はセットがprivateであるため、値を設定することはできません。これは、おおよそ次のようになり、コードに変換:

private object _AddedObject; 
public object AddedObject 
{ 
    get { return this._AddedObject; } 
    private set { this._AddedObject = value; } 
} 

クラス自体(ObjectAddedEventArgsクラス)は、おそらく、そのデータにアクセスし、イベントハンドラに追加データ(AddedObject値)を提供するために使用され、そしてそのイベントの応答の一部としてそれと何かをしてください。

0

あなたが弱いようにし、それを購読することができ、この

event EventHandler<ObjectAddedEventArgs> MyObjectAddedEvent; 

ようなあなたのイベントを宣言して良いことは、容易

myObjectInstance.MyObjectAddedEvent += new EventHandler<ObjectAddedEventArgs>(MyObjectAddedEventMethod).MakeWeak(eh => d.MyObjectAddedEvent -= eh); 

    private void MyObjectAddedEventMethod(object sender, ObjectAddedEventArgseventargs) 
    { 
     //do something with the event args 
    } 

弱いもの、あなたはhereを見つけます。

関連する問題