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