首先,为了使事情更清楚,我将从顶部解释我的情况:
我有一个具有以下签名的方法:
public virtual void SendEmail(String from, List<String> recepients, Object model)
我想做的是生成一个匿名对象,该对象具有模型对象的属性以及前两个参数。将模型对象展平为PropertyInfo []非常简单。因此,我想到了创建一个字典,该字典将保存PropertyInfo和前两个参数,然后将其转换为匿名对象,其中键是属性的名称,值是属性的实际值。
那可能吗?还有其他建议吗?
如果您确实要将字典转换为以字典中的项目作为属性的对象,则可以使用ExpandoObject:
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;
但是我不确定这样做会如何帮助您。