在我使用对象数据库持久化其实例的类中,我一直不得不这样做:
private string _name;
public string Name
{
get { return this._name; }
set { _name = value; this.Save(); }
}
而我更愿意输入:
[PersistedProperty(Name)]
private string _name;
PersistedProperty 属性生成 Getter 和 Setter 就像默认的 [Property()] 属性一样,除了我想向生成的 Setter 添加一行代码。
有没有一种方法可以创建执行此操作的属性?希望 ,它适用于 Intellisense。
默认的 [Property()] 属性是如何发挥作用的?如果我看到代码,我可以移植它...
注意:我实际上是在 Boo 中这样做的,但我想我会提供 c# 代码,因为更多人可能愿意回答这个问题,但是,如果有 Boo 特定的解决方案,我会洗耳恭听!
更新:
我的目标只是减少打字和困惑。事实证明,最简单的方法是使用一个脚本,该脚本根据我的类中的标记生成部分类。
从标记(与部分类一起)自动生成源代码很容易,而且实际上看起来是一种非常有前途的方法,可以解决我们通常试图用继承和泛型类型解决的一些问题。
最佳答案
这需要 aspect oriented programming .虽然 .NET 不直接支持,但可以通过第三方工具完成,例如 PostSharp .
然而,为了智能感知工作,这必须在库中完成,因为(最终)编译代码将展开到完整的属性 getter/setter 中。
关于c# - 使用属性生成自定义 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868881/