所以问题是我有以下行,其中值是一个字符串
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 = 解析(值);
但这不起作用
有任何想法吗?
您根本不需要知道类型:
object value = TypeDescriptor.GetConverter(property.Type).ConvertFromString(value);
var filterValue = Expression.Constant(value, property.Type);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,泛型方法不合适(或不需要)。
不过,您可能需要对 进行特殊处理null- 或者只是不允许它(property.Type)int?等......