1

C#では、これを行うことができます:

public int Foo { get; set; }

いいですね。しかし、ゲッターまたはセッターで何かをしたいときはすぐに、これを次のように変更する必要があります。

private int foo;
public int Foo {
    get { return foo; }
    set {
        foo = value;
        DoSomething();  // all that other code, just to add this line!
    }
}

これを回避することは可能ですか?私はこのようなことをしたいと思っています:

public int Foo {
    get;
    set {           
       DoSomething();
    }
}

上記にどれだけ近づけることができますか?

4

4 に答える 4

6

いいえ、既存のバージョンのC#またはC#4.0のプロパティでこれを行う方法はありません。

于 2009-03-20T03:35:26.933 に答える
2

他の人が言ったように、これを行う組み込みの方法はありません。

PostSharpで似たようなことを達成できます。しかし、努力する価値があるかどうかはわかりません。

[AfterSet(DoSomething)]
public int Foo {
    get;
    set;
}
于 2009-03-20T03:55:52.780 に答える
0

自動プロパティを使用すると、コンパイラによってバッキング フィールドが生成されます。カスタムの getter/setter では、操作するバッキング フィールドを手動で作成する必要があります。自動プロパティでカスタムの getter/setter を指定する機能は、取得または設定するものが何もないため、基本的にメソッドのように動作します。

于 2009-03-20T03:49:46.853 に答える
0

簡単な答えは?いいえ、長い答えですか?申し訳ありませんが、まだありません。:)私はあなたの苦痛を感じますが、それはそうです。

于 2009-03-20T03:50:32.607 に答える