【问题标题】:Expression.Constant(value, type) type is unknown. How to define the typeExpression.Constant(value, type) 类型未知。如何定义类型
【发布时间】:2009-11-19 15:29:20
【问题描述】:

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

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

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

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

私有静态 T 解析(字符串值) { return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value); }

使用它我可以做到这一点:

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

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

var newValue = 解析(值);

但这不起作用

有什么想法吗?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    你根本不需要知道类型:

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

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

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

    【讨论】:

    • TypeDescriptor 是一个非常有用的东西,感谢您提供的信息! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 2021-01-09
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多