使用属性生成自定义setter

and*_*sit 5 .net c# attributes boo automatic-properties

在我坚持使用对象数据库的实例的类中,我不得不这样做:

private string _name;
public string Name
    {
    get { return this._name; }
    set { _name = value; this.Save(); }
    }
Run Code Online (Sandbox Code Playgroud)

而我宁愿输入这个:

[PersistedProperty(Name)]
private string _name;
Run Code Online (Sandbox Code Playgroud)

其中PersistedProperty属性生成一个Getter和Setter,就像默认的[Property()]属性一样,除了我想在生成的Setter中添加一行代码.

有没有办法可以创建一个属性来做到这一点?希望,它适用于Intellisense.

默认的[Property()]属性是如何做的呢?如果我看到代码,我可以嫁接......

注意:我实际上是在Boo中这样做,但是我认为我会给c#代码,因为更多的人可能愿意回答这个问题,但是,如果有一个Boo特定的解决方案,我全都耳朵!

更新:

我的目标只是减少打字和杂乱.事实证明,最简单的方法是使用一个脚本,该脚本根据我的类中的标记生成部分类.

从标记(与部分类一起)自动生成源代码很容易,实际上看起来像是一种非常有前途的方法来解决我们通常尝试使用继承和泛型类型解决的一些问题.

Ree*_*sey 1

这就需要面向方面的编程。虽然 .NET 不直接支持,但可以通过第三方工具(例如PostSharp)来完成。

然而,要使智能感知发挥作用,这必须在库中完成,因为(最终)编译的代码将展开到完整的属性 getter/setter 中。