Я работаю с примерами WPF библиотеки Prism здесь (в частности, вот этот сильный>).
Я пытаюсь преобразовать загрузчик примера из контейнера Unity в DryIoc. Исходный код выглядит так:
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
var catalog = (ModuleCatalog)ModuleCatalog;
catalog.AddModule(typeof(ModuleAModule));
}
}
Мой новый код выглядит так:
class Bootstrapper : DryIocBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve(typeof(MainWindow), true) as DependencyObject;
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
var catalog = (ModuleCatalog)ModuleCatalog;
catalog.AddModule(typeof(ModuleAModule));
}
}
Но когда я пытаюсь запустить новый код, я получаю следующее исключение:
Внутреннее исключение говорит:
Activation error occurred while trying to get instance of type ModuleAModule, key ""
И внутреннее исключение этого исключения говорит:
Unable to get constructor of DryIoc.Rules using provided constructor selector when resolving DryIoc.Rules {ReturnDefault} as parameter "rules"
in DryIoc.Container as parameter "container"
in ModuleA.ModuleAModule.
Код для модуляМодуль:
public class ModuleAModule : IModule
{
IRegionManager _regionManager;
Container _container;
public ModuleAModule(RegionManager regionManager, Container container)
{
_regionManager = regionManager;
_container = container;
}
public void Initialize()
{
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(PersonList));
_container.RegisterTypeForNavigation<PersonDetail>();
}
}
ModuleAModule
?IContainer
или конкретный тип? Похоже, вы пытаетесь создать новый контейнер вместо того, чтобы использовать существующий. - person Haukinger   schedule 30.03.2018ModuleAModule
. Код для всего примера (который все еще довольно мал) можно найти здесь, что может быть проще просмотреть. - person Robert Harvey   schedule 30.03.2018IContainer
в конструктор модуля, а неContainer
. - person Evk   schedule 30.03.2018