如何将Decimal数据类型转换为Object并仍然观察IConvertable接口ToType()方法。这是使用Convert.ChangeType转换自定义数据类型(基于Decimal)的初步工作。
编辑:我们想转换为对象,以便我们可以支持IConvertible的ToType方法。此方法返回类型对象。其原因是在一个方法中使用,该方法根据属性类型填充类对象属性。答案 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) //做点什么......