我正在尝试使用NHibernates Validator库中的DecimalMin验证器。不幸的是,由于编译器的限制,我在尝试使用它时遇到错误。我确信它的一些简单,但我正处于需要转移到另一个任务而不再燃烧它的时间点上,所以任何帮助都会受到赞赏。
[DecimalMin(10.01)]
public decimal Amount { get; set; }
上面的代码使用DecimalMin属性,构造函数值为10.01。 Attribute的构造函数接受十进制值。但是,编译器不允许10.01或10.01m。
以10.01作为我收到的值:“无法将源类型'double'转换为目标类型'decimal'
我收到的值为10.01m:“属性参数必须是常量表达式,表达式类型或属性参数类型的数组创建表达式。”
我已经google了一下试图找到答案,我的google-fu今天失败了。
有没有人有如何使用此验证器的示例?
答案 0 :(得分:2)
这是NHibernate.Validator中的一个错误。小数在属性参数中无法表示。
use decimal values as attribute params in c#?
解决方案是修补NHibernate.Validator,以便构造函数采用float或double,然后在ctor中执行到decimal的转换。希望我有更好的答案。