c# - 使用属性生成自定义 setter

标签 c# .net attributes boo automatic-properties

在我使用对象数据库持久化其实例的类中,我一直不得不这样做:

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/

相关文章:

.net - setter中的数据绑定(bind)和抛出异常

list - 如何创建包含容器具有属性的列表的 POJO?

c# - DefaultMemberAttribute - 它有什么作用?

python - 在不创建新属性的情况下降低值的简单方法?

c# - 模拟框架如何工作?

c# - 如果没有抽象成员,基类是否应该标记为抽象?

c# - 图片框问题

c# - 如何让TableEntity序列化非公共(public)属性?

c# - 无法加载文件或程序集 'MySql.Data'参数不正确

c# - 如何检测 HTTPWebRequest 中的客户端证书身份验证请求?