Динамически создавать публичные свойства - PullRequest
1 голос
/ 15 июля 2010

Как я могу динамически создавать некоторые общедоступные свойства в пользовательском веб-контроле.

Например, веб-элемент управления имеет 5 элементов управления TextBox. Мне нужно открытое свойство для каждого элемента управления TextBox, чтобы можно было установить определенное свойство элемента управления TextBox.

Я хочу иметь возможность зацикливать элементы управления в веб-контроле и создавать открытое свойство для каждого элемента управления TextBox.

есть идеи?

Ответы [ 3 ]

1 голос
/ 15 июля 2010

Отредактировано:

Если дочерние элементы управления присутствуют во время разработки, вам нужно объяснить , почему вы хотите динамически добавлять свойства для доступа к элементам управления - если только нетхорошая причина, это звучит как плохой дизайн.

Вот мое предложение:

  • Оставьте свои элементы управления как Friend или Private - не подвергайтенепосредственно (это приводит к тесной связи и становится неприятным со временем).

  • Предоставить новое открытое свойство, которое получает / устанавливает соответствующее свойство в 1x ваших элементов управления;так что если вы хотите установить .Text в 5x TextBox, у вас будет 5x свойств.

  • Покончите с этим.

Если выпытаясь быть умным, динамически добавляя их, тогда это хорошее намерение, которое приведет к плохим результатам.Просто помни: ПОЦЕЛУЙ (будь проще, глупый!).

1 голос
/ 15 июля 2010

Вы можете создать свойство, подобное этому

    private TextBox[] textBoxes; //declared as a class member variable

    public TextBox[] TextBoxes
    {
        get
        {
            if (textBoxes == null)
            {
                textBoxes =(from ctrl in this.Controls.OfType<Control>()
                            where ctrl is TextBox
                            select (TextBox)ctrl).ToArray();
            }
            return textBoxes;
        }
    }
0 голосов
/ 15 июля 2010

Предоставление элементов управления, содержащихся в WebContol (или любом другом классе), не очень хороший дизайн, так как делает ваш код хрупким и сложным в обслуживании. Вы должны поместить код, который непосредственно манипулирует TextBoxes внутри WebControl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...