2
我有一個WPF窗口應用程序,它使用ms功能區控件作爲菜單。在我的基礎結構項目中,我希望有一個共享服務,它將在所有模塊中引用。然後,每個模塊將使用該服務來定義應該爲模塊顯示哪些菜單項。棱鏡v4,MEF服務
我讀了這個Prism+MEF: delayed a service export from 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);
}
}
}
我本來期望調試線路輸出,因爲它的進口假之一。任何想法是我失蹤的?
謝謝,解決了它。我在getter中初始化MenuService,並將IMenuService作爲參數添加到模塊中的ImportingConstructor。我評論了ModuleDependency系列,它仍然有效......不知道爲什麼。 – 2011-02-08 16:35:12