[英]How to initialize IDictionary in constructor?
在TagBuilder和其他類中,我可以寫如下:
var tr = new TagBuilder("HeaderStyle"){InnerHtml = html, [IDictionary Attributes]}
但我不知道如何傳遞IDictionary參數。
我怎樣才能做到這一點對飛 ? 無需創建Dictionary變量。
TagBuilder就是一個例子,還有其他類也接受參數IDictionary
。 問題是關於通用案例。
從匿名類型創建詞典的另一種方法:
new Dictionary<int, StudentName>()
{
{ 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}},
{ 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}},
{ 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}}
};
以下博客文章有一個幫助方法,可以從匿名類型創建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;
}
如果您指的是Attributes屬性,則setter是私有的,因此您無法在對象初始值設定項中進行設置。
在初始化TagBuilder之后,您應該能夠使用tr.Attributes.Add(key,value)
添加單個屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.