您知道如何拥有一个自动生成支持字段的属性吗?就像我去的那样:
public String SomeProperty {get; set;}
我知道如果我想向该属性添加代码,我必须创建支持字段:
public string someProperty = string.Empty;
public string SomeProperty
{
get { return someProperty; }
set
{
someProperty = value;
DoSomething();
}
}
基本上,我想知道的是......有没有办法做到这一点,但无需创建支持字段?例如,我可以使用它来触发设置属性时发生的某种事件。我正在寻找这样的东西:
public string SomeProperty
{
get;
set { this.OnSomeEvent; }
}
但是我知道这会导致编译错误,因为如果get
需要set
需要声明一个正文。
我研究过,但我找不到任何东西,但我想我会检查是否有人知道。
我想我真正想要的是在某个属性发生变化时触发事件的某种方式,但不必添加所有额外的混乱。有什么建议吗?
答案 0 :(得分:19)
简单的答案是否定的,你不能双管齐下。来自msdn:
在C#3.0及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁。
答案 1 :(得分:0)
框架内置的内容没有任何解决方案,您无法通过反射修改现有类型(以便在运行时添加逻辑)。实现这一目标的唯一方法似乎是在编译时。
有一个产品http://www.postsharp.net/可以实现此目的(拦截属性/方法调用),并且似乎有免费版。