Предположим, у меня есть 10 текстовых полей, и все они имеют разные значения, но все они - текстовые поля. И у меня есть метод CheckInputValue(Textbox tb)
. Теперь, щелкнув по кнопке, я хотел бы, чтобы метод проверял все текстовые поля и определял, разрешено ли это значение.Существует ли эффективный способ вызова одного и того же метода для всех объектов типа T?
Но я не хочу, чтобы это сделать:
void DoWork()
{
CheckInputValue(t1);
CheckInputValue(t2);
CheckInputValue(t3);
CheckInputValue(t4);
...
CheckInputValue(tx);
}
ОБРАТИТЕ ВНИМАНИЕ: выше только в качестве примера.
У меня есть сложный метод, который необходимо выполнить на нескольких элементах управления одного типа, и у меня есть около 25 элементов управления. Есть ли более элегантный способ сделать это? Спасибо.
Я думаю, что вы не должны проверять данные внутри управления. Вы должны проверить данные, которые в вашей модели просмотра. В этом случае вы можете добавить атрибут (например, [Validate]) к свойствам вашей модели просмотра, и когда вам понадобится, вы сможете собрать все свойства, которые имеют этот атрибут, и проверить значения. –
Трудно ли создать набор всех элементов управления, которые вы хотите оценить? Казалось бы, это тяжелая часть. –
Являются ли элементы управления в некоторой коллекции, реализующей 'IEnumerable'? –
Jodrell