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

本文关键字:WebControl 初始化 对象 属性 Attributes 集合 | 更新日期: 2023-09-27 17:58:52

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

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

我得到错误:

无法使用集合初始化类型"AttributeCollection"初始值设定项,因为它没有实现"System.Collections.IEnumerable"

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

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

您可以这样做,但如果您使用C#。这被称为索引初始化,所以请尝试以下代码,但正如我所说,这在Visual Studio 2015和C#6中应该可以正常工作:

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

旧的集合初始值设定项(C#6之前)仅适用于实现IEnumerable<T>并具有Add方法的类型。但现在,任何带有索引器的类型都允许通过此语法进行初始化。