すべての引数が null かどうかをチェックし、そうであれば ArgumenutNullExceptions をスローすることにひどくうんざりしています。
私が理解しているように、C# 4.0 ではコントラクトによる設計が可能です。C# 4.0 でメソッドが null 引数を受け入れないように指定することはできますか?
また、null をチェックしてスローするという単調なタスクを回避するために、その間にできることはありますか (おそらく属性ですか?)。
すべての引数が null かどうかをチェックし、そうであれば ArgumenutNullExceptions をスローすることにひどくうんざりしています。
私が理解しているように、C# 4.0 ではコントラクトによる設計が可能です。C# 4.0 でメソッドが null 引数を受け入れないように指定することはできますか?
また、null をチェックしてスローするという単調なタスクを回避するために、その間にできることはありますか (おそらく属性ですか?)。
Rick Brewster は、この投稿で、簡潔で宣言的なスタイルのパラメーター チェックの優れたソリューションについて説明しています。
http://blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/
リフレクション (DbC の欠点) の使用を回避し、例外的でないコード パスのオーバーヘッドを作成しません。
彼が拡張メソッドを使用して、null オブジェクトのインスタンス メソッド呼び出しのように見えるものを許可する方法と同様です。非常に巧妙な IMO のコーディング。
DbC、Google Spec#、および PostSharp で販売されている場合。
役立つジェネリック クラスを作成できますNotNull<T>
が、いくつかの副作用があります。Robert Nystrom のブログ投稿を参照してください。
コードコントラクトの使用を開始しました。C#4.0の新機能です。プロジェクト設定で表示できるようにするには、MSからアドインをダウンロードする必要があります。詳細はこちら-> http://research.microsoft.com/en-us/projects/contracts/