如何从Type变量创建Nullable ?

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

public static void Foobar(object Meh) { } 

我需要的是使此方法返回MehNullable版本,但类型T来自Meh.GetType() 。 因此返回将是Nullable ,其中MehTypeMeh的类型。

有什么想法或建议吗?

谢谢

更新:我之所以需要这个是因为这个例外:

没有为类型’System.Nullable`1 [System.Int32]’和’System.Int32’定义二元运算符Equal。

 return Expression.Equal(leftExpr, rightExpr); 

其中leftExprSystem.Nullable1[[System.Int32rightExprSystem.Int32

如果你在编译时不知道类型,那么表达它的唯一方法就是作为object – 只要你打开一个可以为null的值类型,就会得到一个空引用或一个盒装的非可空值类型。

因此,这些片段在结果方面完全相同

 int? nullable = 3; object result = nullable; int nonNullable = 3; object result = nonNullable; 

换句话说,我认为你不能真正表达你想要做的事情。

你必须使用Meh.GetType()而不是通用吗? 那这个呢?

 public static Nullable Foobar(T Meh) where T : struct { } 

我假设“某种类型”并不意味着“任何类型”,因为上面的解决方案只适用于值类型。