У меня есть класс Form, который содержит несколько пользовательских элементов формы.
У меня есть объект Entity, который предоставляет определенные атрибуты для элемента, они анализируются из файла XML. Все элементы принимают Entity в качестве параметра в своем конструкторе, но после этого требуют других параметров в своем конструкторе.
Для создания элемента я использую оператор switch, как показано ниже. Однако я хочу преобразовать это, чтобы использовать Activator.CreateInstance. Однако с разными параметрами в конструкторе единственный известный мне способ справиться с этим - создать DTO, который содержит все параметры, передать его в конструктор, а затем каждый конструктор запросит любую требуемую информацию. Мне нужна альтернатива, поскольку я понимаю, что DTO не одобряется в современных имплементациях.
switch (entity.GetPropertyValue("Class"))
{
case "FormCheckBox":
newElement = new FormCheckBox(entity, BaseElementHeight);
break;
case "RowSeparator":
newElement = new RowSeperator(entity, RowHeight, _mainCanvas);
break;
case "FormLabel":
newElement = new FormLabel(entity, BaseElementHeight);
break;
case "FormEditBox":
newElement = new FormEditBox(entity, _mainCanvas);//, BaseElementHeight, 600);
break;
case "FormComboBox":
newElement = new FormComboBox(entity, BaseElementHeight);
break;
case "FormTextBox":
newElement = new FormTextBox(entity, BaseElementHeight, TextFontSize, MaxFontBoxSize);
break;
default:
return null;
}
Есть у кого мысли и/или идеи по этому поводу?