2016-07-27 83 views
3

我想初始化WebControl對象,但是對於某些字段,這有點棘手。例如,當我嘗試初始化一個TextBox對象的Attributes屬性是這樣的:使用集合初始值設定項初始化WebControl對象的屬性屬性

using System.Web.UI.WebControls; 
Panel panel = new Panel() { Controls = { new TextBox() { Attributes = { { "key", "value" } } } } }; 

我得到的錯誤:

Cannot initialize type ' AttributeCollection ' with a collection initializer because it does not implement 'System.Collections.IEnumerable'

任何想法,怎麼可能在這種情況下,內聯初始化工作?

+0

你的問題聽起來像[這一個](http://stackoverflow.com/questions/30668572/htmlgenericcontrol-attributes-in-object-initializer),並接受的答案說,這是不可能的。 –

回答

4

你可以做到這一點,但如果你使用C#6。只有

Panel panel = new Panel 
{ 
    Controls = 
    { 
     new TextBox 
     { 
      Attributes = 
      { 
       ["readonly"] = "true", 
       ["value"] = "Hi" 
      } 
     } 
    } 
}; 

舊集合初始化(此前C#6):這就是所謂的指數初始化所以試試下面的代碼,但正如我說這應該在Visual Studio 2015和C#6工作正常適用於執行IEnumerable<T>並且具有Add方法的類型。但是現在任何帶有索引器的類型都將允許通過此語法進行初始化。