У меня есть приложение Windows WPF, которое использует элемент управления MS ленты для меню. В моем инфраструктурном проекте я хочу иметь общий сервис, на который будут ссылаться все модули. Каждый модуль будет затем использовать эту службу, чтобы определить, какие пункты меню должны отображаться для модуля.
Я прочитал это Prism + MEF: отложен экспорт службы из prism-module , но другие модули не могут распознать службу.
Услуга
namespace Infrastructure
{
[ModuleExport("InfModule", typeof(InfModule), InitializationMode = InitializationMode.WhenAvailable)]
[PartCreationPolicy(CreationPolicy.Shared)]
public class InfModule : IModule
{
[Export(typeof(IMenuService))]
public IMenuService MenuService { get; private set; }
public void Initialize()
{
MenuService = new MenuService();
MenuService.AddItem("test");
}
}
}
Модуль
namespace Classic
{
[ModuleExport("Classic", typeof(Classic), InitializationMode = InitializationMode.WhenAvailable)]
[ModuleDependency("InfModule")]
public class Classic : IModule
{
private IRegionManager _regionManager;
[Import(typeof(IMenuService))]
private IMenuService menuService { get; set; }
[ImportingConstructor]
public Classic(IRegionManager regionManager)
{
this._regionManager = regionManager;
// This shows as true
Debug.WriteLine(menuService == null);
}
public void Initialize()
{
_regionManager.RegisterViewWithRegion("RibbonRegion", typeof(Views.RibbonTabMenu));
// This shows as true
Debug.WriteLine(menuService == null);
}
}
}
Я бы ожидал, что одна из строк отладки выведет значение false с момента ее импорта. Есть идеи, что мне не хватает?