我刚刚得到以下异常,这似乎表明Guid
不是对象。
"System.Guid"类型的表达式不能用于返回类型"System.Object">
Guid
怎么不是对象?
编译器是如何解决这个问题的?当一个类型不是对象时,一定有一些东西可以让我在运行时检测到,如果是,这会是什么?
====================使用附加信息编辑====================
Expression.Lambda<Func<object>>(SomeExpression)
其中SomeExpression可以是Guid的常数值。
Expression.Lambda<Func<object>>(SomeExpression)
这里的问题是您使用的表达式树不正确。即使box操作在C#中是隐式的,它仍然存在。它是而不是隐含在表达式树中。以下应该修复它:
Expression.Lambda<Func<object>>(
Expression.Convert(SomeExpression, typeof(object))
您也可以检查SomeExpression.Type.IsValueType
来决定是否添加此额外的显式转换。