在TagBuilder和其他类中,我可以写如下:
var tr = new TagBuilder("HeaderStyle"){InnerHtml = html,[IDictionary Attributes]}
但我不知道如何传递IDictionary参数.
我该怎么做呢?无需创建Dictionary变量.
TagBuilder就是一个例子,还有其他类可以接受参数IDictionaryas.问题是关于通用案例.
解决方法
以下博客文章有一个帮助方法,可以从匿名类型创建Dictionary对象.
void CreateADictionaryFromAnonymousType() { var dictionary = MakeDictionary(new {Name="Roy",Country="Israel"}); Console.WriteLine(dictionary["Name"]); } private IDictionary MakeDictionary(object withProperties) { IDictionary dic = new Dictionary<string,object>(); var properties = System.ComponentModel.TypeDescriptor.GetProperties(withProperties); foreach (PropertyDescriptor property in properties) { dic.Add(property.Name,property.GetValue(withProperties)); } return dic; }