2013-02-05 46 views
0

我的代碼轉換一個類型,其可爲空相當於

NullableConverter nullableConverter = new NullableConverter(type); 
Type baseType = nullableConverter.UnderlyingType; 
Object value = Convert.ChangeType(rule.Data, baseType); 
constant = Expression.Constant(value); 

在這種情況下類型,該位是decimal?但它可以是任何可空類型。

我需要valuedecimal?類型,而不是類型decimal,因爲它目前是。問題是,Convert.ChangeType無法正確使用可空類型。所以我創建了一個不可爲空的第一個。

如何將包含在rule.Data中的字符串轉換爲type

+0

你的問題還不太清楚。你問如何將字符串轉換爲小數? –

+1

你能刪除變量嗎?這會使涉及的類型更加明顯。 – thecoop

+0

我不知道這種類型,它都是通用的,沒有任何一個變化(我改變了)會有所幫助。在這種情況下,'type'碰巧是'decimal?','rule.Data'是一個字符串。 – CaffGeek

回答

0

你不能。

當一個可空結構在Object中被裝箱時,它不會存儲一個盒裝的可空結構。如果該結構沒有值,它將僅框null,如果它有一個值,它會將可空結構的基礎值框起來。

你將不需要拳擊它甚至是可能的。

+0

我不需要將它存儲爲一個對象,我需要將'rule.Data'轉換爲'type'(這是一個Nullable <>類型)。我並不在乎我如何管理它。 – CaffGeek

+0

@CaffGeek好吧,你將它傳遞給'Expression.Constant',它接受一個對象,所以不管你做什麼,它都會在那個時候被裝箱。 – Servy

+0

出現我的問題是別的。你說得對,即使它是一個'十進制'嗎?'我的代碼仍然會失敗,同樣的錯誤是'十進制' – CaffGeek

相關問題