от
У меня что-то вроде этого:
interface IProduct { }

class ProductA : IProduct { }

class ProductB : IProduct { }

....

interface IViewModel { }

class ProductAViewModel : IViewModel { }

class ProductBViewModel : IViewModel { }

И теперь я хочу быть в состоянии создавать экземпляры свои ViewModel, не зная реального вида продукции:
IProduct prod = new ProductA();
IViewModel vm = someFactoryOrBuilderObject.CreateViewModel(prod);
// real type of vm depends on the product's type
// if prod is ProductA, vm must be ProductAViewModel
Цели: Тип модели ViewModel должны быть решены во время выполнения. Добавление новых продуктов и viewModels в мое приложение не должно требовать каких-либо изменений в существующий код. Что является лучшим способом для реализации этой функции? Есть несколько очевидных способов, но они не отвечают: Создавая что-то вроде карты (словарь) типов (productTypevmType). Но когда я хочу добавить еще несколько продуктов, мне придется менять эту карту. Создать метод фабрики, как GetViewModel() внутри каждый класс продукта. Но это безумно нарушает твердых ПСП. Создание завода или строитель. Но эти модели не покрывает мои требования.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
...