【问题标题】:how to set compile time validation on class instance members如何对类实例成员设置编译时验证
【发布时间】:2011-02-02 11:29:32
【问题描述】:

我创建了一个如下所示的类:

class myclass
{
  Public  int myint;
}

现在我想限制 myint 的范围(最小 5 和最大 10)。

如果有人设置 myint 的值不在该范围内,我希望它会给出编译时错误(不是运行时错误) 请帮助我如何实现它。

【问题讨论】:

    标签: c# silverlight-4.0 c#-4.0


    【解决方案1】:

    这是实验性的,但您可以查看Spec#。它可以为您提供更多的编译时检查。代码协定是另一种选择(但仅在某些版本的 Visual Studio 中可用)。

    编辑:

    看起来代码联系人现在可以作为独立下载获得!见this page

    【讨论】:

      【解决方案2】:

      您在 .NET 中没有开箱即用的功能,但有一些验证引擎可以让您根据某些规则验证某个对象的实例。

      阅读:

      我会建议你使用 NHValidator,因为它非常易于使用,需要零配置并且有良好的社区支持。另一个好处是您可以在任何层(业务、演示...)中使用它,因为它是面向属性的,这意味着您无需继承任何类或实现接口即可在任何地方使用它!

      【讨论】:

      • 下面这行是什么意思 另一个好处是您可以在任何层(业务、演示...)中使用,因为它是面向属性的,这意味着您不需要继承任何层类或实现一个接口以便在任何地方使用它
      • 我不想使用 nhibernate 因为它用于数据库,send 是 microsoft enterprice lib,这会给你运行时错误(不是编译时错误)
      • 我的意思是您可以验证任何层中的对象,因为具有验证规则的属性使用的是可以从您的业务或演示文稿中调用的库中的属性。想象一下,在将某个对象保存到数据库之前,您需要验证某个对象是否具有预期值,或者您需要验证某个用户填写的某个表单的字段是否具有正确的值。您可以使用 NHValidator 完成这两件事。
      • 这不是真的。 NHValidator 独立工作。 NHibernate 的唯一好处是相同的验证属性用于从您的对象自动创建数据库,但如果您不使用 NHibernate,NHValidator 对 NHibernate 没有依赖性。
      • 你确定休眠验证是编译时间而不是运行时间
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多