我想初始化WebControl
对象,内联,但对于某些字段,这有点棘手。例如,当我尝试像这样初始化TextBox
对象的Attributes
属性时:
using System.Web.UI.WebControls;
Panel panel = new Panel() { Controls = { new TextBox() { Attributes = { { "key", "value" } } } } };
我收到错误:
无法使用集合初始化类型“AttributeCollection” 初始化程序因为它没有实现 'System.Collections.IEnumerable'
知道在这种情况下内联初始化如何工作?
答案 0 :(得分:5)
你可以这样做但是如果你使用C#6。这称为索引初始化,所以请尝试以下代码,但正如我所说,这应该在Visual Studio 2015和C#6中正常工作:
Panel panel = new Panel
{
Controls =
{
new TextBox
{
Attributes =
{
["readonly"] = "true",
["value"] = "Hi"
}
}
}
};
旧的集合初始值设定项(在C#6之前)仅适用于实现IEnumerable<T>
且具有Add
方法的类型。但是现在任何带有索引器的类型都允许通过这种语法进行初始化。