是否需要在以下示例中使用[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]
属性时,工作正常。
答案 0 :(得分:1)
这取决于您在项目的“代码合同”选项中设置的内容。你有没有开启运行时合同检查?