Инициализируйте свойство Attributes объекта WebControl с помощью инициализатора коллекции

Я хочу инициализироватьWebControl объекты, встроенные, но для некоторых полей это немного сложно. Например, когда я пытаюсь инициализироватьAttributes свойствоTextBox объект как это:

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

Я получаю ошибку:

Не могу инициализировать типAttributeCollection'с инициализатором коллекции, потому что он не реализует' System.Collections.IEnumerable '

Любая идея, как может работать встроенная инициализация в этом случае?

 Frank Tan29 июл. 2016 г., 21:59
Ваш вопрос звучит похоже наэтоти принятый ответ говорит, что это невозможно.

Ответы на вопрос(1)

Решение Вопроса

Вы можете сделать это, но если вы используете C # 6. Это называетсяинициализация индекса так что попробуйте следующий код, но, как я уже сказал, это должно хорошо работать в Visual Studio 2015 и C # 6:

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

Старая коллекция инициализаторов (До C # 6) работает только с типами, которые реализуютIEnumerable<T> и естьAdd метод. Но теперь любой тип с индексатором разрешит инициализацию через этот синтаксис.

Ваш ответ на вопрос