1

我正在尝试使用 NHibernates Validator 库中的 DecimalMin 验证器。不幸的是,由于编译器的限制,我在尝试使用它时遇到了错误。我确信它很简单,但我正处于需要转移到另一项任务并且不再花时间在它上面的地步,所以任何帮助将不胜感激。

    [DecimalMin(10.01)]
    public decimal Amount { get; set; }

上面的代码使用构造函数值为 10.01 的 DecimalMin 属性。Attribute 的构造函数接受十进制值。但是,编译器不允许 10.01 或 10.01m。

我收到的值为 10.01:“无法将源类型 'double' 转换为目标类型 'decimal'

我收到的值为 10.01m:“属性参数必须是常量表达式、表达式类型或属性参数类型的数组创建表达式。”

我四处搜索试图找到答案,但我的 google-fu 今天让我失望了。

有没有人有一个如何使用这个验证器的例子?

4

1 回答 1

2

这是 NHibernate.Validator 中的一个错误。小数在属性参数中不可表示。

在 c# 中使用十进制值作为属性参数?

解决方案是修补 NHibernate.Validator 以便构造函数采用浮点数或双精度数,然后在 ctor 中执行到十进制的转换。希望我有更好的答案给你。

于 2010-11-17T21:20:41.577 回答