开发者

Expression.Constant(value, type) type is unknown. How to define the type

So the problem is I have the following line wehre value is a string

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

if property.Type is a string everything is fine however the type really could be anything, like a decimal?

I dont know how to make this work for all different types I have this function

private static T Parse (string value)
{
    return (T)TypeDescriptor.GetConve开发者_Go百科rter(typeof(T)).ConvertFromString(value);
}

using that I can do this:

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

however I would have to know in advance the type , I tried

var newValue = Parse(value);

but that doesnt work

Any ideas?


You don't need to know the type at all:

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

The generics approach isn't appropriate (or needed) in this case.

You might want special handling for null, though - or simply not allow it (property.Type) could be int? etc...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜