メタプログラミングはまだ妥協的• メタプログラミングでは• 生成元・生成結果両方見えてほしい•ただ、元と結果は明確に分離したいpublic class Sample1{public string Name { get; set; }public int X { get; set; }public int Y { get; set; }}public class Sample1 : INotifyPropertyChanged{public int X { get { return x; } set { SetProperty(ref x, value, xPropertyChangedEventApublic int Y { get { return y; } set { SetProperty(ref y, value, yPropertyChangedEventA#region NotifyPropertyChangedGeneratorpublic event PropertyChangedEventHandler PropertyChanged;private int x;private static readonly PropertyChangedEventArgs xPropertyChangedEventArgs = new Properprivate int y;private static readonly PropertyChangedEventArgs yPropertyChangedEventArgs = new Proper元情報生成結果• デバッグのためだけに見たい• コードを書く上ではノイズ
null非許容参照型• 今のC#に欠けているもの値型 参照型許容T? T非許容 T これがないstatic void F(string s){if (s == null)throw new ArgumentNullException(nameof(s));}現状の書き方メソッドのシグネチャだけ見てnull許容かどうか判定できない煩雑