当调用Set时,有没有办法继续使用自动实现的属性,同时仍然会引发更改事件,例如INotifyPropertyChanged?
代替:
private string _value;
public string Value
{
get
{
return this._value;
}
set
{
this._value = value;
this.ValueChanged(this,EventArgs.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
public string Value
{
get;
set
{
this.ValueChanged(this,EventArgs.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然setter看起来不对,但是可以在不使用后备存储变量填充我的类的情况下执行此操作吗?
更新:看起来我的懒惰目标没有标准的解决方案,我认为最好的解决方案是使用CodeRush或Resharper为我生成所有后备存储.
你不能这样做.自动实现的属性的规范非常清楚:
自动实现(自动实现)属性可自动执行此模式.更具体地说,允许非抽象属性声明具有分号存取器主体.两个访问器必须存在且两者都必须具有分号主体,但它们可以具有不同的可访问性修饰符.当像这样指定属性时,将自动为该属性生成一个支持字段,并且将实现访问器以读取和写入该支持字段.支持字段的名称是编译器生成的,用户无法访问.
换句话说,它们只能有" get;"和" set;",具有访问修饰符的可能性.
| 归档时间: |
|
| 查看次数: |
3650 次 |
| 最近记录: |