Я сталкиваюсь со странным поведением MEF в Призме, которое не могу объяснить.Я нашел способ обойти это, что меня не слишком устраивает, поэтому я действительно хотел бы понять, что его вызывает.
Я объявил свой класс окна оболочки с PartCreationPolicy
из NonShared
.И я пытаюсь использовать функцию CompositionContainer.GetExportedValue<>()
из моего MefBootstrapper
для создания нового экземпляра оболочки.
Странная вещь, если я вызываю Container.GetExportedValue<>()
до того, как оболочка была создана,Я получаю новый объект типа Shell
, каждый раз, когда я вызываю его.Однако после инициализации оболочки повторные вызовы Container.GetExportedValue<>()
возвращают один и тот же экземпляр оболочки.
Как будто инициализация оболочки каким-то образом перерегистрирует мой экспорт оболочки как общий.
Однако я не вижу никаких вызовов в коде загрузчика, которые явно пытаются достичь этого.
Может кто-нибудь объяснить:
- какое действие имеет этот побочный эффект
- Как (если возможно) восстановить поведение
NonShared
, чтобы я мог создавать несколько оболочек с помощью MEF / ServiceLocator.
Cheers,
Mark