いくつかのカスタムフォーム要素を含むFormクラスがあります。
要素に特定の属性を提供するEntityオブジェクトがあり、これらはXMLファイルから解析されます。すべての要素は、コンストラクターのパラメーターとしてエンティティを受け取りますが、その後、コンストラクターで異なるパラメーターを必要とします。
要素の作成には、現在、以下の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;
}
誰かがこれについて考えやアイデアを持っていますか?