UnityBootstrapper 的方法 ConfigureContainer() 应该被覆盖以执行您的要求:
MSDN - 配置容器:
复合应用程序库和在它之上构建的应用程序都依赖于一个容器来注入所需的依赖项。在容器配置阶段,注册了几个核心服务,如 UnityBootstrapper 中的以下代码所示。
UnityBootstrapper 上的 MSDN
MSDN 示例:
protected virtual void ConfigureContainer()
{
…
if (useDefaultConfiguration)
{
RegisterTypeIfMissing(typeof(IServiceLocator), typeof(UnityServiceLocatorAdapter), true);
RegisterTypeIfMissing(typeof(IModuleInitializer), typeof(ModuleInitializer), true);
RegisterTypeIfMissing(typeof(IModuleManager), typeof(ModuleManager), true);
RegisterTypeIfMissing(typeof(RegionAdapterMappings), typeof(RegionAdapterMappings), true);
RegisterTypeIfMissing(typeof(IRegionManager), typeof(RegionManager), true);
RegisterTypeIfMissing(typeof(IEventAggregator), typeof(EventAggregator), true);
RegisterTypeIfMissing(typeof(IRegionViewRegistry), typeof(RegionViewRegistry), true);
RegisterTypeIfMissing(typeof(IRegionBehaviorFactory), typeof(RegionBehaviorFactory), true);
}
}
您也可以在此处注册实例等,Container
直接使用,就像您已经做的那样。
CreateShell() 方法不是执行此操作的地方,因为您应该在此处创建外壳。
因此,简而言之,只需覆盖 ConfigureCatalog() 并将您的代码粘贴到那里。