2

我想知道在 ASP.NET MVC 2 中使用“代码合同”属性作为验证规则的可用选项。

4

2 回答 2

2

您可以通过自定义运行时检查器来做到这一点。

尽管可以将代码合同调整为用作验证框架,但我建议不要这样做。这是调整运行时检查器的更高级功能之一,更重要的是,它不是代码契约的用途。

Code Contracts 基本上是一种在您的项目中集成按合同设计的方法。尽管其目的之一是根据您的类设计验证您的代码,但它不是一个验证框架

在我看来,你应该在另一个真正的验证框架旁边使用它。

在你开始使用代码契约之前,我建议你阅读这里的用户手册。它包含所有信息,包括如何自定义运行时检查器。

于 2010-08-02T08:34:07.187 回答
1

是的,“代码契约”的主要目的是根据我的类设计验证我的代码,但它也描述了我的对象的有效状态。

我能想到的验证场景是以下三种类型:

  1. 输入验证(UI 验证)
  2. 域验证 (DbC)
  3. 输出验证(持久性验证,例如:NHibernate Validator

我认为验证是一个逻辑问题,目标对象是否处于有效状态。

DbC 包含三个部分,

  1. 验证规则
  2. 静态检查器
  3. 运行时检查器

第一部分(规则)在所有三种验证场景中都很常见。当我使用“代码合同”将属性标记为“非空”以验证其设计时,使用 MVC(UI 验证)的“System.ComponentModel.DataAnnotations”将其标记为“非空”不是很丑吗?

抽象地说,有效状态的定义是核心,验证框架和“代码契约”的共享部分提供了它,另外还有一个是域设计(而不是 I/O)的“静态检查器”。

于 2010-08-05T16:15:32.237 回答