語境
我正在尋找一種方式來建立一個Silverlight應用程序中使用PRISM和統一的系統,這樣我可以有一個管理的導航等的使用情況控制器與特定用例相關的東西。這個用例控制器應該有它自己的統一容器,以便我可以隔離該用例所需的依賴關係。與子容器中的棱鏡工作與團結的擴展
下面的代碼片斷用於初始化用例的控制器和設置它的代碼
所以它使用正確的子容器。
public class MyController
{
private IUnityContainer _container;
public MyController(IUnityContainer container)
{
_container = container;
_container.RegisterType<Object,ChildView>(ModuleViews.MyChildView);
}
[Dependency]
public IRegionManager RegionManager { get; set; }
public StartUseCase()
{
// This results in a resolve action for System.Object instead of the view I registered
// in the child container
this.RegionManager.RequestNavigate(ModuleRegions.ChildRegion,ModuleViews.MyChildView);
}
public static MyController Create(IUnityContainer container)
{
var childContainer = container.CreateChildContainer();
childContainer.RegisterInstance<IUnityContainer>(childContainer);
// The container view is registered in the parent container
var containerView = container.Resolve<Object>(GlobalViews.MyContainerView);
var childRegionManager = parentRegionManager.Regions[GlobalRegions.MainRegion].Add(containerView,GlobalViews.MyContainerView,true);
childContainer.RegisterInstance<IRegionManager>(childRegionManager);
var controller = childContainer.Resolve<MyController>();
return controller;
}
}
問題
的基礎工作,但是當我嘗試使用RegionManager.TryNavigate(...)
它不能解決與指定名稱的視圖。我已經在子容器中註冊了正確名稱的視圖,但顯然我在用例控制器中獲得的RegionManager只能解析我已經在根容器中註冊的視圖。
我的問題
什麼我需要做的,能夠正確地使孩子視圖的決心,沒有父容器統一註冊它。