ここで述べたタイプ セーフなメソッドと同様に、ViewModelBaseClass にカスタム Get/SetValue(with INotifyPropertyChanged) ヘルパー関数を追加することにしました。しかし、私はオプションのイニシャライザを Get ヘルパー関数に追加したいと考えています。残念ながら、default キーワードは、参照型を null に、null 許容値型を null に、値型を既定値に初期化します。
型の既定値、Nullable の BaseType の既定値 (可能な場合)、および既定のコンストラクターを持つ参照型の既定のコンストラクターを返す Get ヘルパーによって呼び出される汎用関数を作成したいと考えています。コンストラクターを実装しない参照型の場合、null を返す可能性があると思います。しかし、 if else で new T() と default(T) を呼び出す方法を理解するのは難しいため、コンパイラは適切な制約がないと言います (もちろん制約は実行時にチェックされるため)。
別の方法として、Jon Skeet のhttp://msmvps.com/blogs/jon_skeet/archive/2010/11/02/evil-code-overload-resolution-workaround.aspxを Get ヘルパー メソッドで使用できると思います。言った:
これは、おそらく私が今までに書いた中で最も恐ろしいコードです。
実生活では使用しないでください。別のメソッド名などを使用してください。それでも、それは楽しい小さなパズルですね。
)利点として、デフォルトのコンストラクターなしで参照型を強制して、オプションではないinit Funcを指定できるようになる可能性があります。