在c#中,我可以这样做:
public int Foo { get; set; }
哪个好。但是,只要我想在getter或setter中做任何事情,我就必须将其更改为:
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();
}
}
我距离上面有多近?
答案 0 :(得分:6)
不,没有办法在现有版本的C#或C#4.0中使用属性。
答案 1 :(得分:2)
正如其他人所说,没有内置的方法可以做到这一点。
你可以通过PostSharp获得类似的东西。但我不确定它值得努力。
[AfterSet(DoSomething)]
public int Foo {
get;
set;
}
答案 2 :(得分:0)
使用自动属性,编译器会为您生成支持字段。自定义getter / setter要求您手动创建要使用的支持字段。在自动属性上指定自定义getter / setter的能力实际上会使它像一个方法一样,因为没有任何东西可以获取或设置。
答案 3 :(得分:0)
简短的回答?不,答案很长?对不起,还是没有。 :)我感觉到你的痛苦,但就是这样。