2010-11-17 60 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