将十进制转换为对象

时间:2009-12-30 13:40:42

标签: c# changetype

如何将Decimal数据类型转换为Object并仍然观察IConvertable接口ToType()方法。这是使用Convert.ChangeType转换自定义数据类型(基于Decimal)的初步工作。

编辑:我们想转换为对象,以便我们可以支持IConvertible的ToType方法。此方法返回类型对象。其原因是在一个方法中使用,该方法根据属性类型填充类对象属性。

3 个答案:

答案 0 :(得分:3)

我认为您无法将其转换为object引用并保留界面。

但您可以将其转换为IConvertable引用并使用它。这只是拳击的另一种形式。

所以重点是:为什么要将它强制转换为对象?

此外,您可以遵循以下路线:

Decimal d = 10;
object x = d;

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

答案 1 :(得分:2)

不确定为什么要将其转换为对象?如果要将其用作IConvertable并保持静态类型安全,只需使用IConvertable引用即可。一旦你转换为一个对象,静态类型的安全性就会丢失。

但是,对象永远不会“丢失”它的类型信息。如果必须使用对象引用,则可以使用as关键字获取对IConvertable的引用。如果转换成功则返回有效引用,如果对象未实现接口,则返回null。

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

答案 2 :(得分:0)

和其他人一样,为什么你想要转换还不清楚,但C#中的所有内容默认都是最高级别的对象。因此,如果您需要将其传递给期望“对象”数据类型的处理函数/方法,您可以对其进行类型转换,然后在需要时将其重新转换为十进制。

CallYourFunction((object)YourDecimalClass);

然后,在你的功能

if(ParameterObject是YourDecimalClassType)   //做点什么......