2011-07-05 12 views
1

[ContractAbbreviator]属性の使用は以下のサンプルで必要ですか?はいの場合は、それがなくても動作します。誰でもこのコードの正当性を検証できますか?ジェネリックヘルパーによるコード契約

/** helper usage class **/ 
public class UserDataFethcer 
{ 
    public UserData GetUserData(string Userid) 
    { 
     ContractsHelper.ValidateString(userid); 
    } 
} 

/** contracts usage class **/ 
public static class ContractsHelper 
{ 
    [ContractAbbreviator] // is this needed or not.. 
    public static void ValidateString(params string[] stringParameters) 
    { 
     Contract.Requires<ArgumentException>(Contract.ForAll(stringParameters, strParams => !string.IsNullOrEmpty(strParams)), Message); 
    } 
} 

は、私は私が[ContractAbbreviator]属性を削除する場合、スキップされたコードのValidateStringContractsHelperにおけるラインの実行中に[ContractAbbreviator]を使用する場合、それが正常に動作することを見つけます。

答えて

1

これは、プロジェクトのコード契約オプションで設定した内容によって異なります。実行時の契約チェックが有効になっていますか?

+0

はい私はそれをオンにしましたが、アプリケーションのパフォーマンスに影響を与えるので、コード契約の使用を中止することを検討しています。ここで私は結果を得た:http://www.codeproject.com/KB/dotnet/ContractPerformance.aspx。一方、私はdotTraceにチェックし、あなたに知らせる予定です。あなたのコメントを共有してください。また、コード契約のオプションについていくつか説明してください。 – Saravanan

+0

マイクロソフトが提供するコードのアプリケーションプロファイリングでは、次の結果が得られます。codecontractsを使用すると、sum関数呼び出し自体の実行時間が2ms増加します。この場合、大規模アプリケーションはどうですか?これをチェックして、あなたのことを詳しく理解できますか? – Saravanan

関連する問題