簡體   English   中英

如何在構造函數中初始化IDictionary?

[英]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}}
};

http://msdn.microsoft.com/en-us/library/bb531208.aspx

以下博客文章有一個幫助方法,可以從匿名類型創建Dictionary對象。

http://weblogs.asp.net/rosherove/archive/2008/03/11/turn-anonymous-types-into-idictionary-of-values.aspx

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM