我正在处理表达式,我需要一种方法来接收某种类型的对象(目前未知)。像这样的东西:

public static void Foobar(object Meh) { }

我需要的是让这个方法返回 Nullable<T>Meh 版本,但 T 类型来自 Meh.GetType() 。所以返回将是 Nullable<MehType> ,其中 MehTypeMeh 的类型。

有什么想法或建议吗?

谢谢

更新: 我需要这个的原因是因为这个异常(exception):

未为类型“System.Nullable`1[System.Int32]”和“System.Int32”定义二元运算符 Equal。
return Expression.Equal(leftExpr, rightExpr);

其中 leftExprSystem.Nullable1[[System.Int32rightExprSystem.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/

10-13 08:31