На вашем месте я бы посмотрел всю информацию о полях, которые пользователи должны просматривать / редактировать, и посмотреть, какие общие темы я вижу. Глядя на ваш вопрос, я бы, вероятно, создал класс / структуру, содержащую следующее:
struct FieldInfo
{
string FieldName;
string DisplayName;
string DataType;
bool Required;
delegate Validator;
string OldValue;
}
delegate bool Validator(string input, out string message);
Я бы вернул FieldInfo [] из Business Logic, а затем в пользовательском интерфейсе использовал этот массив, чтобы определить, что показывать пользователю. Таким образом, даже логин проверки - это бизнес-логин (с использованием делегата), и пользовательский интерфейс должен только решить, какие элементы отображать для каждого типа. Можно даже пойти еще дальше, и у структуры FieldInfo будет имя элемента, сообщающее UI, какой элемент использовать для этого поля (Textbox, DDL и т. Д.)