4. public class PersonViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string name;
public string Name
{
get { return this.name; }
set
{
if (this.name == value) return;
this.name = value;
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name)));
}
}
private int age;
public int Age
{
get { return this.age; }
set
{
if (this.age == value) return;
this.age = value;
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Age)));
}
}
}
6. public class PersonViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string name;
public string Name
{
get { return this.name; }
set
{
if (this.name == value) return;
this.name = value;
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name)));
}
}
private int age;
public int Age
{
get { return this.age; }
set
{
if (this.age == value) return;
this.age = value;
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Age)));
}
}
}
コードスニペットは全てを解決しない
1. コピペバビリティの低さ
生成量が多くて修正対象がおおいため、コー
ドスニペット経由以外での作成が不可
2. ようするに修正耐性が低い
名前の変更等でも修正箇所が多くなったりする
(nameofで若干マシになったけど全然足りない)
3. そもそも生成コード量が多くてノイズと
なっていて見通しが悪くなる
(プロパティ毎にregionで更に見通し悪く)
12. public class PersonViewModel : INotifyPropertyChanged
{
private string name;
public string Name
{
get
{
return name;
}
set
{
SetProperty(ref name, value, "Name");
}
}
private int age;
public int Age
{
get
{
return age;
}
set
{
SetProperty(ref age, value, "Age");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void SetProperty<T>(ref T field, T value, string name)
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
生成が少々短縮化されただけで、コー
ドスニペットの抱えていた3つの問題を
(生成結果が同じなので当然ですが)
何も解決できていない
23. C# 6.0 is...
Initializers for auto-properties
Getter-only auto-properties
Expression-bodied function members
Using static
Null-conditional operators
String interpolation
nameof expressions
Index initializers
Exception filters
Await in catch and finally blocks
小粒なのばっか……
そういうのじゃなくて、大事なのは?