C#中自动实现的属性

ben*_*rce 12 .net c#

当调用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为我生成所有后备存储.

wom*_*omp 6

你不能这样做.自动实现的属性的规范非常清楚:

自动实现(自动实现)属性可自动执行此模式.更具体地说,允许非抽象属性声明具有分号存取器主体.两个访问器必须存在且两者都必须具有分号主体,但它们可以具有不同的可访问性修饰符.当像这样指定属性时,将自动为该属性生成一个支持字段,并且将实现访问器以读取和写入该支持字段.支持字段的名称是编译器生成的,用户无法访问.

换句话说,它们只能有" get;"和" set;",具有访问修饰符的可能性.