【问题标题】:Save Property Expression into Dictionary将属性表达式保存到字典中
【发布时间】:2015-11-25 17:49:24
【问题描述】:

关于“从 lambda 表达式检索属性名称”https://stackoverflow.com/a/672212/740651 我想知道是否可以将属性表达式保存到字典中。

我不想将 PropertyInfo 对象本身保存到字典中,因为字典应该是静态成员变量。因此我只知道源的类型,但我没有得到它的实例。所以我尝试了以下方法:

        Dictionary<int, Expression<Func<myfooclass, object>>> dic = 
    new Dictionary<int, Expression<Func<myfooclass, object>>>()
        {
                         { 1, <myfooclass, String> u => u.PropertieFoo },
                         { 2, <myfooclass, int> u => u.SomePropertie },
                         [...]
        };

有人知道如何解决这个问题吗?

[编辑] 我想在字典中指定属性类型。

【问题讨论】:

    标签: c#


    【解决方案1】:

    在向字典添加值时,您不需要(也不能使用该语法)指定泛型类型参数。只需使用

    { 1, u => u.PropertieFoo },
    { 2, u => u.SomePropertie },
    

    【讨论】:

    • 在某些属性上,例如当数据类型为 bool/enum 时,lambda 表达式会执行类似于“Convert(u.PropertieFoo)”的操作,这会导致 (propertyLambda.Body as MemberExpression) 为空。有没有办法在字典中设置属性值的类型?
    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多