2009-12-30 71 views
2

如何將十進制數據類型轉換爲對象並仍然觀察IConvertable接口的ToType()方法。這是爲了使用Convert.ChangeType轉換自定義數據類型(基於Decimal)的初步工作。將十進制轉換爲對象

編輯:我們想轉換爲對象,以便我們可以支持IConvertible的ToType方法。此方法返回類型對象。原因是用於基於屬性類型填充類對象屬性的方法。

回答

3

我不認爲你可以將它轉換爲object參考並保持界面。

但是你可以將它轉換爲IConvertable引用並使用它。那只是拳擊的另一種形式。

所以問題是:爲什麼你想要將它轉換爲對象?

此外,您也可以按照路線是這樣的:

Decimal d = 10; 
object x = d; 

if (x is IConvertible) 
{ 
    string s = (x as IConvertible).ToString(); 
} 
2

不知道你爲什麼會想將它轉化成一個對象。如果您想將其用作IConvertable並保持靜態類型安全,請使用IConvertable參考。一旦你投射到一個物體,靜態類型的安全性就會喪失。

但是,一個對象永遠不會「鬆動」它是類型信息。如果您必須使用對象引用,則可以使用as關鍵字獲取對IConvertable的引用。如果轉換成功,它將返回一個有效的引用,如果對象沒有實現該接口,它將返回null。

object num = new Decimal(); 
// ... 
IConvertable convertableNum = num as IConvertable; 
if (convertableNum != null){ 
    // Do something meaningful ... 
} 
0

與其他人一樣,你爲什麼會想轉換還不清楚,但一切都在C#中處於其最高水平默認的對象。因此,如果您需要將它傳遞給需要「對象」數據類型的函數/方法,則只需對其進行類型轉換,然後在需要時將其重新轉換爲十進制。

CallYourFunction (object)YourDecimalClass);

然後,在你的功能可按

如果(ParameterObject是YourDecimalClassType) //做某事

相關問題