- 締切済み
C#プロパティが変わったらイベントがほしい
C#でクラスを作成していますが、クラス内でとある条件になるとプロパティに値が設定されます。その時、メインのプログラムから感知できませんか? class Class1 { public string MyProperty { get; set; } public void ReadText() { bool ret = false; if (ret) MyProperty = "発見しました。"; } } 上記サンプルでMyPropertyがセットされた時、上位プログラムで処理を行いたいです。 お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
コールバックメソッドを使えば良いのではないですかね。 ※以下のサンプルは、スペースを全角で記載しているので、 試すときは半角に修正すること --------------------------------------------------------------------------- class Class1 { public Action MyPropertyCallback = null; // コールバックメソッドへの参照を保存する変数 private string _myProperty = null; public string MyProperty { get{ return this._myProperty; } set{ this._myProperty = value; this.MyPropertyCallback(); } } } class Parent { public void Main() { Class1 obj = new Class1(); obj.MyPropertyCallback = MyCallBack; // コールバックメソッドへの参照を設定 obj.MyProperty = "若く明るい歌声に、雪崩は消える花も咲く"; } // Class1 の MyProperty が変更されたら呼び出される private void MyCallBack() { Console.WriteLine("MyProperty が変更されたよおっかさん"); } }
- weavaest
- ベストアンサー率15% (157/1020)
質問のタイトルにある通りイベントを投げれば良いのではないですか。 イベントを定義して、setの所でイベントを読んでやれば良いと思います。質問の意図する所はどこですか。イベントの定義の方法が解らないってことですか。プロパティの所に処理が書けることを知らないってことでしょうか。 若しくは、私が質問を読み違えてますか?これだったら申し訳ないです。 イベントの書き方 https://msdn.microsoft.com/ja-jp/library/8627sbea.aspx プロパティの処理の書き方 https://msdn.microsoft.com/ja-jp/library/w86s7x04.aspx