2

構造体またはオブジェクトのプロパティが変更されるたびに制御する必要があります。使用できるイベントはありません。

サンプル: 幅または高さがいつ変更されたかを知るにはどうすればよいですか? それは可能ですか?

「System.Drawing.Size = サイズ」

    private Size mySize;

    public Size MySize
    {
        get {
            //What if X or Y is changed?? I need to know that
            return mySize; 
        }
        set {

            mySize = value; 
        }
    }

この特定のケースでは、Size プロパティが読み取り専用であれば、問題は解決されます。しかし、そうではありません。

4

4 に答える 4

3

簡単な答え - いいえ、フィールドが変更されたときに発生する単純な古い C# オブジェクトにはイベントはありません。

私が知っているあなたのオプション:

  • クラスを変更して(可能であれば)イベントを発生させます
  • クラスから継承し、派生クラスでイベント発生コードを記述します (仮想 get/set が可能であると仮定します)
  • プロパティをインターフェイスに抽出し、コード全体でそのインターフェイスを使用し、プロパティの変更を開始する汎用インターフェイスのラッパーを構築します。

変更可能な構造体は悪と見なされることに注意してください。「プロパティが変更されるたびにstruct」ケースを完全に避けるようにしてください。

于 2013-07-16T16:45:55.597 に答える