У меня есть приложение 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 с момента ее импорта. Есть идеи, что мне не хватает?