Expression.Constant(值,类型)类型未知。如何定义类型

时间:2009-11-19 15:29:20

标签: c# linq

所以问题是 我有以下行,是一个字符串

var filterValue = Expression.Constant(value, property.Type);

如果property.Type是一个字符串,一切都很好但是类型真的可以是任何东西,比如十进制?

我不知道如何使这项工作适用于所有不同类型 我有这个功能

private static T Parse (string value)
{
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}

使用它我可以这样做:

var newValue = Parse(value);
var filterValue = Expression.Constant(newValue, property.Type);

然而我必须事先知道类型,我试过

var newValue = Parse(value);

但这不起作用

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您根本不需要知道类型:

object value = TypeDescriptor.GetConverter(property.Type).ConvertFromString(value);
var filterValue = Expression.Constant(value, property.Type);

在这种情况下,泛型方法不合适(或不需要)。

您可能需要对null进行特殊处理,或者根本不允许它(property.Type)可能是int?等等。