2010-11-17 56 views
1

我试图从NHibernates验证程序库使用DecimalMin验证程序。不幸的是,由于编译器的限制,我在尝试使用它时遇到了错误。我确定它很简单,但我正处于需要转移到另一个任务而不再需要时间的地步,所以我将不胜感激。NHibernate DecimalMin验证程序

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

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

随着10.01作为值I接收:“不能转换源类型‘双’为目标类型‘十进制’

随着10.01米作为值I接收:”的属性参数必须是一个常量表达式,类型的属性参数类型的表达式或数组创建表达式。”

我GOOGLE了四周,试图找到答案,我的谷歌福今天没有我。

任何人都不会有如何的例子使用此验证程序?

回答

2

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

use decimal values as attribute params in c#?

解决方法是修补NHibernate.Validator使得构造函数采用浮点或双精度,然后执行在构造函数为十进制的转换。希望我对你有更好的答案。

+0

James - 谢谢!非常感激。我以为我必须写我自己的,完全按照你的建议去做。我只是想仔细检查一下,我没有失去理智。再次感谢! – 2010-11-17 22:08:36

+0

为NHibernate团队提出的问题提交了一个bug和补丁:http://216.121.112.228/browse/NHV-107 – 2010-11-19 02:36:57