У меня есть C# application
, который хранит данные в NoSQL database
. Приложение имеет класс репозитория, который использует серию объектов для перевода данных из формы NoSQL в те, что используются моделями C#, и наоборот (по существу форма ORM). Объекты реализуют интерфейс converter
, и каждый объект работает на одном конкретном data type (string, bool, etc)
. Внутри они используют отражение для выполнения преобразования. Экземпляры этих объектов создаются методом, который возвращает объект для данного типа. В настоящее время логика выглядит примерно следующее:Избегание нескольких операторов if на фабричном методе C#
if(type == typeof(string)
return new StringConverter(...);
if(type == typeof(int) || type == typeof(uint))
return new IntegerConverter(...);
... // and so on
Однако все эти if
заявления беспокоить меня. Я знаю, что могу сделать что-то вроде создания словаря для сопоставления типов методам создания, но я не уверен, приведет ли это к более легко читаемому, легкому обновлению/расширению кода (?). Учитывая необходимость создания абстракций типа, что является лучшим способом сделать это? Любые предложения приветствуются. Огромное спасибо заранее.
У IntegerConverter и StringConverter есть базовый тип? Если это так, вы можете использовать это решение - http://stackoverflow.com/a/5847468/442444 – CarbineCoder