【问题标题】:Converting an anonymous type to a dictionary将匿名类型转换为字典
【发布时间】:2019-09-22 07:09:36
【问题描述】:

我正在尝试创建一个将匿名类型转换为字典的函数。 我正在查看此链接thread 中已接受的答案。但是我得到了错误

不能使用 lambda 表达式作为动态参数 在没有先将其强制转换给委托人的情况下分派操作或 表达式树类型

这就是我想做的事情

public Dictionary<string,string> convert(dynamic dtype)
{
 var props = content.GetType().GetProperties();
 var pairs = props.Select(x => x.Name + "=" + x.GetValue(a, null)).ToArray();  // <----Exception
 var result = string.Join("&", pairs);
 return result
} 

关于如何解决此问题的任何建议?我正在尝试这样做

       var student= new
        {
            // TODO: Make this figure out and return underlying device status.
            type = "Active",
        };



 var dict = convert(student);

【问题讨论】:

  • 将参数类型从dynamic改为object

标签: c# reflection


【解决方案1】:

这里有例外:

 x.GetValue(a, null)

只需将a 更改为content,如下所示:

var pairs = props.Select(x => x.Name + "=" + x.GetValue(content, null)).ToArray();

content 是您的匿名对象的名称。

但是你写的这个解决方案没有返回字典。 如果你想要字典,请这样做

public static Dictionary<string, string> convert(object content)
        {

            var props = content.GetType().GetProperties();
            var pairDictionary = props.ToDictionary(x => x.Name,x=>x.GetValue(content,null)?.ToString());
            return pairDictionary;
        }

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2020-04-18
    • 2012-01-20
    • 1970-01-01
    • 2010-11-27
    相关资源
    最近更新 更多