我可以使用get和set代码创建自动属性(没有私有成员)吗?

时间:2009-03-20 03:33:13

标签: c# properties automatic-properties

在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();
    }
}

我距离上面有多近?

4 个答案:

答案 0 :(得分:6)

不,没有办法在现有版本的C#或C#4.0中使用属性。

答案 1 :(得分:2)

正如其他人所说,没有内置的方法可以做到这一点。

你可以通过PostSharp获得类似的东西。但我不确定它值得努力。

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

答案 2 :(得分:0)

使用自动属性,编译器会为您生成支持字段。自定义getter / setter要求您手动创建要使用的支持字段。在自动属性上指定自定义getter / setter的能力实际上会使它像一个方法一样,因为没有任何东西可以获取或设置。

答案 3 :(得分:0)

简短的回答?不,答案很长?对不起,还是没有。 :)我感觉到你的痛苦,但就是这样。