一尘不染

转换字典 要匿名对象?

c#

首先,为了使事情更清楚,我将从顶部解释我的情况:

我有一个具有以下签名的方法:

public virtual void SendEmail(String from, List<String> recepients, Object model)

我想做的是生成一个匿名对象,该对象具有模型对象的属性以及前两个参数。将模型对象展平为PropertyInfo
[]非常简单。因此,我想到了创建一个字典,该字典将保存PropertyInfo和前两个参数,然后将其转换为匿名对象,其中键是属性的名称,值是属性的实际值。

那可能吗?还有其他建议吗?


阅读 405

收藏
2020-05-19

共1个答案

一尘不染

如果您确实要将字典转换为以字典中的项目作为属性的对象,则可以使用ExpandoObject

var dict = new Dictionary<string, object> { { "Property", "foo" } };
var eo = new ExpandoObject();
var eoColl = (ICollection<KeyValuePair<string, object>>)eo;

foreach (var kvp in dict)
{
    eoColl.Add(kvp);
}

dynamic eoDynamic = eo;

string value = eoDynamic.Property;

但是我不确定这样做会如何帮助您。

2020-05-19