Я создаю приложение WPF, используя призму и единство в качестве контейнера. Пару раз я расклеился с порядком регистрации типов, когда тип (ViewModel в конструкторе представлений) был автоматически создан Unity, когда я его не зарегистрировал. Затем я попытался зарегистрировать тип, используя ContainerControlledLifetimeManager() и подумал Я создал синглтон. Однако создание авто означает несколько экземпляров модели представления.Prism and Unity - предотвратить автоматическое создание типа
Помимо очевидного решения о том, что вы не являетесь маппетом и не выполняете вышеизложенное, существует ли способ предотвратить создание Unity автоматически незарегистрированных типов и, возможно, исключение исключения?
Спасибо за быстрый ответ. Я вообще не беспокоился о создании интерфейсов для моделей viewmodels, поскольку я не мог видеть эту точку, поскольку они привязаны к представлениям, которым они предоставляют контекст данных. Я видел некоторые плюсы и минусы за это, но для меня это было излишним. Возможно, мне нужно переосмыслить это. Итак, нет опции конфигурации? – pilsdumps
Если вы зарегистрируете данный тип; по умолчанию используется переходное время жизни. Использование 'ContainerControlledLifetimeManager', безусловно, обеспечит однопользовательское поведение, однако вы не пытаетесь сделать это с помощью ViewModel. Имейте в виду, что ViewModel можно использовать для нескольких видов. Кроме того, он позволяет вам обычным образом поменять конкретный тип для тестирования или другими способами. Единство, создающее экземпляр конкретного типа, не настраивается, что я знаю, это поведение контейнера. Пример singleton должен работать, нужен код, чтобы понять ваш пример. –
Container.Resolve() - это ужасная практика! Проксирование данных через сервис - отличный совет! –
aateeque