我正在处理表达式,我需要一种方法来接收某种类型的对象(目前未知)。像这样的东西:
public static void Foobar(object Meh) { }
我需要的是让这个方法返回
Nullable<T>
的 Meh
版本,但 T
类型来自 Meh.GetType()
。所以返回将是 Nullable<MehType>
,其中 MehType
是 Meh
的类型。有什么想法或建议吗?
谢谢
更新: 我需要这个的原因是因为这个异常(exception):
未为类型“System.Nullable`1[System.Int32]”和“System.Int32”定义二元运算符 Equal。
return Expression.Equal(leftExpr, rightExpr);
其中
leftExpr
是 System.Nullable1[[System.Int32
, rightExpr
是 System.Int32
。 最佳答案
如果您在编译时不知道类型,则表示它的唯一方法是 object
- 一旦您装箱可空值类型,您最终会得到空引用或装箱的不可空值类型.
所以这些片段在结果方面完全相同:
int? nullable = 3;
object result = nullable;
int nonNullable = 3;
object result = nonNullable;
换句话说,我认为你无法真正表达你想要做什么。
关于c# - 如何从 Type 变量创建 Nullable<T>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7070791/