如何在不使代码看起来混乱的情况下在.NET 4.0中使用代码契约?

Fio*_*ite 8 contracts code-formatting code-contracts c#-4.0

我已经开始使用代码契约,并发现它很难立即发现方法的"胆量".

拿这个(非常简单)的例子:

public static void UserAddNew(string domain, string username, string displayName)
{
    Contract.Assert(!string.IsNullOrWhiteSpace(domain));
    Contract.Assert(!string.IsNullOrWhiteSpace(username));
    Contract.Assert(!string.IsNullOrWhiteSpace(displayName));

    LinqDal.User.UserAddNew(domain, username, displayName);
}
Run Code Online (Sandbox Code Playgroud)

现在我很想将合同放在一个区域,以便它们可以被隐藏起来,但是我担心我会失去一个很好的优势,能够浏览方法并看到它的期望.

你怎么做才能让你的合同"整洁"?或者我只是太挑剔了?

Ray*_*sen 6

看看ContractClass和ContractClassFor属性.这允许您在单独的程序集中编写具有代码契约的类.这使您可以使合同可用于开发工作,不会使您的代码混乱,也意味着您不必使用实时代码部署合同:

合同类属性

属性合同类