使用集合初始值设定项初始化WebControl对象的Attributes属性

时间:2016-07-27 18:28:08

标签: c# asp.net initialization collection-initializer

我想初始化WebControl对象,内联,但对于某些字段,这有点棘手。例如,当我尝试像这样初始化TextBox对象的Attributes属性时:

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

我收到错误:

  

无法使用集合初始化类型“AttributeCollection”   初始化程序因为它没有实现   'System.Collections.IEnumerable'

知道在这种情况下内联初始化如何工作?

1 个答案:

答案 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方法的类型。但是现在任何带有索引器的类型都允许通过这种语法进行初始化。