将类型转换为可为空的等价物

时间:2013-02-05 15:47:14

标签: c# type-conversion nullable

我有这段代码

 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

1 个答案:

答案 0 :(得分:0)

你做不到。

当在Object中装入可为空的结构时,它不存储盒装的可空结构。如果结构没有值,它将只是框null,如果它有一个值,它将包含可空结构的基础值。

你甚至不需要为此辩护。