将代码添加到属性的C#get/set而不需要支持字段?
您知道如何拥有自动生成支持字段的属性吗?如果我去的话:将代码添加到属性的C#get/set而不需要支持字段?,c#,properties,get,set,field,C#,Properties,Get,Set,Field,您知道如何拥有自动生成支持字段的属性吗?如果我去的话: public String SomeProperty {get; set;} 我知道,如果我想向该属性添加代码,我必须创建备份字段,如下所示: public string someProperty = string.Empty; public string SomeProperty { get { return someProperty; } set { someProperty =
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; }
}
但是我知道这会导致编译错误,因为如果set
需要声明主体,那么get
需要声明主体
我已经调查过了,但什么也找不到,但我想我会查一查是否有人知道
我想我真正想要的是当一个属性被改变时触发一个事件的某种方式,但不必添加所有额外的混乱。有什么建议吗?简单的答案是没有,你不能两全其美。发件人: 在C#3.0及更高版本中,当属性访问器中不需要额外逻辑时,自动实现的属性使属性声明更加简洁。
框架中没有任何解决方案,您无法通过反射修改现有类型(以便在运行时添加逻辑)。实现这一点的唯一方法似乎是在编译时
有一种产品可以实现这一点(拦截属性/方法调用),而且似乎有一个免费版本。键入“propfull”,然后键入tab选项卡-这是一种使用实例字段创建属性的快速方法。问得好。如果它类似于javascript,“this”可以引用属性本身,因此是backing字段。您还可以将doSomething本身作为类中的方法公开。如果你不需要退货value@toddmo,您将失去所属类的上下文。postsharp是一个很好的选择,它允许您进行面向方面编程(AOP)。AOP与其说是减少混乱,不如说是管理横切关注点(跨大量业务需求使用的行为,并且不容易隔离)