これが私の問題です。私は契約による設計の大ファンです。特に他の開発者が使用できるライブラリを開発するときに、この概念を使用しています。私はこれを行うための新しい方法を見つけました。それは:Contract.Requires
の代わりにException
:だから:の代わりに:
public void SomeMethod(string name){
if(name==null) throw new NullArgumentException("Null values not supported");
}
私は今持っています:
public void SomeMethod(string name){
Contract.Requires(name != null);
}
編集:私はデバッグモードでVS2010の下で働いています。
問題:ある場合でもContract.Requires
、何もしません!name
null
MSDNのドキュメントには次のように書かれています。
囲んでいるメソッドまたはプロパティの前提条件コントラクトを指定します。
ただし、条件が満たされない場合は何も指定されません。
また、例外をスローし、メッセージを表示する他の オーバーロードがあることに気づきました...しかし、それでは何のためにあるのでしょうか?Contract.Requires
Contract.Requires(Boolean)
以下の回答を編集して、APIのフルパワーを得るにはプラグインをインストールする必要があることを強調しましたが、Contract
異なるプラットフォームでコードを同じように動作させたいMonoユーザーはどうでしょうか?