У меня есть класс 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;
}
У кого-нибудь есть мысли и / или идеи по этому поводу?