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

rou*_*sis 1 c# linq

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

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

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

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

private static T Parse(字符串值)
{
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}

使用它我可以这样做:

var newValue = 解析(值);
var filterValue = Expression.Constant(newValue, property.Type);

不过我必须提前知道类型,我尝试过

var newValue = 解析(值);

但这不起作用

有任何想法吗?

Mar*_*ell 5

您根本不需要知道类型:

object value = TypeDescriptor.GetConverter(property.Type).ConvertFromString(value);
var filterValue = Expression.Constant(value, property.Type);
Run Code Online (Sandbox Code Playgroud)

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

不过,您可能需要对 进行特殊处理null- 或者只是不允许它(property.Typeint?等......