2009-03-20 8 views
1

、私はこれを行うことができます。いいですgetおよびsetコードで自動プロパティ(プライベートメンバーなし)を作成できますか? 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(); 
    } 
} 

私は上記に取得できますか近いですか?

答えて

6

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

0

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

0

短い答えですか?いいえ、長い答えは?申し訳ありませんが、まだありません。 :)私はあなたの痛みの人を感じるが、それはそれが方法です。

2

他の人は言っているように、これを行う方法はありません。

PostSharpと似たようなものを実現できます。しかし、私はその努力に値するとは確信していません。

[AfterSet(DoSomething)] 
public int Foo { 
    get; 
    set; 
} 
+0

興味深いですが、あなたが正しいと思います。それは努力する価値がありません。P – Blorgbeard

+0

いくつか例を挙げてください。その私にとって非常に興味深い:)! –

関連する問題