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]
属性を削除する場合、スキップされたコードのValidateString
ContractsHelper
におけるラインの実行中に[ContractAbbreviator]
を使用する場合、それが正常に動作することを見つけます。
はい私はそれをオンにしましたが、アプリケーションのパフォーマンスに影響を与えるので、コード契約の使用を中止することを検討しています。ここで私は結果を得た:http://www.codeproject.com/KB/dotnet/ContractPerformance.aspx。一方、私はdotTraceにチェックし、あなたに知らせる予定です。あなたのコメントを共有してください。また、コード契約のオプションについていくつか説明してください。 – Saravanan
マイクロソフトが提供するコードのアプリケーションプロファイリングでは、次の結果が得られます。codecontractsを使用すると、sum関数呼び出し自体の実行時間が2ms増加します。この場合、大規模アプリケーションはどうですか?これをチェックして、あなたのことを詳しく理解できますか? – Saravanan