Доброго времени суток!
Пытаюсь научится делать приложения с использование пантера MVVM и IoC контейнерам.
В данном приложение используются данные библиотеки:
- Prism.Wpf;
- Prism.Autofac;
- Autofac;
Дополнительно: Prism.Mef(так как почти не задействуется).
Вот сам подозреваемый:
namespace DailyLog.Desktop.MainWindowMenu
{
[ModuleExport(typeof(MainWindowMenuModule))] // Единствиенное где используется "Prism.Mef"
public class MainWindowMenuModule : IModule
{
[Import]
public IRegionManager Region { get; set; }
public void OnInitialized(IContainerProvider containerProvider)
{
Region.RegisterViewWithRegion("MainWindowMenuRegion", typeof(HomeView));
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
}
Здесь регистрации модуля "MainWindowMenuModule" и самого модуля.
namespace DailyLog.Desktop.MainWindowMenu
{
public class MainWindowMenuModuleRegistry : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.RegisterType<MainWindowMenuModule>();
builder.RegisterType<HomeView>();
}
}
}
Вот загрузчик:
namespace DailyLog.Desktop.MainWindowMenu
{
public class Bootstrapper : AutofacBootstrapper
{
protected override void ConfigureContainerBuilder(ContainerBuilder builder)
{
base.ConfigureContainerBuilder(builder);
builder.RegisterType<Shell.Views.Shell>();
// Регистрация Autofac module здесь...
builder.RegisterModule<MainWindowMenuModuleRegistry>();
}
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
// Регистрация Prism module здесь...
Type typeNewsModule = typeof(MainWindowMenuModule);
ModuleCatalog.AddModule(new ModuleInfo(typeNewsModule.Name, typeNewsModule.AssemblyQualifiedName));
}
protected override DependencyObject CreateShell()
{
return Container.Resolve<Shell.Views.Shell>();
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Shell.Views.Shell)this.Shell;
Application.Current.MainWindow.Show();
}
}
}
Полный текст ошибки:
Prism.Modularity.ModuleInitializeException: "An exception occurred while initializing module 'MainWindowMenuModule'.
- The exception message was: Значение не может быть неопределенным.
Имя параметра: context
Check the InnerException property of the exception for more information. If the exception occurred
while creating an object in a DI container, you can exception.GetRootException() to help locate the
root cause of the problem."
Логи:
Изначально это исключение было создано в этом стеке вызовов:
Autofac.ResolutionExtensions.ResolveService(Autofac.IComponentContext, Autofac.Core.Service, System.Collections.Generic.IEnumerable)
Prism.Autofac.Ioc.AutofacContainerExtension.Resolve(System.Type)
Prism.Modularity.ModuleInitializer.CreateModule(string)
Prism.Modularity.ModuleInitializer.CreateModule(Prism.Modularity.IModuleInfo)
Prism.Modularity.ModuleInitializer.Initialize(Prism.Modularity.IModuleInfo)
В чем собственно проблема?
P.s ссылка на GitHub если вдруг...
https://github.com/xXJamXx/DailyLog/tree/development