Prism - loading modules causes activation error
- by Noich
I've created a small Prism application (using MEF) with the following parts:
- Infrastructure project, that contains a global file of region names.
- Main project, that has 2 buttons to load other modules.
- ModulesInterfaces project, where I've defined an IDataAccess interface for my DataAccess module.
- DataAccess project, where there are several files but one main DataAccess class that implements both IDataAccess and IModule.
When the user click a button, I want to show him a list of employees, so I need the DataAccess module. My code is as follows:
var namesView = new EmployeesListView();
var namesViewModel = new EmployeesListViewModel(employeeRepository);
namesView.DataContext = namesViewModel;
namesViewModel.EmployeeSelected += EmployeeSelected;
LocateManager();
manager.Regions["ContentRegion"].Add(new NoEmployeeView(), "noEmployee");
manager.Regions["NavigationRegion"].Add(namesView);
I get an exception in my code when I'm trying to get DataAccess as a service (via ServiceLocator). I'm not sure if that's the right way to go, but trying to get it from the ModuleCatalog (as a type IDataAccess returns an empty enumeration). I'd appreciate some directions.
Thanks.
The problematic code line:
object instance = ServiceLocator.Current.GetInstance(typeof(DataAccess.DataAccess));
The exact exception:
Activation error occured while trying to get instance of type DataAccess, key ""
The inner exception is null, the stack trace:
at Microsoft.Practices.Prism.MefExtensions.MefServiceLocatorAdapter.DoGetInstance(Type serviceType, String key) in c:\release\WorkingDir\PrismLibraryBuild\PrismLibrary\Desktop\Prism.MefExtensions\MefServiceLocatorAdapter.cs:line 76
at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
Edit
The same exception is thrown for:
container = (CompositionContainer)ServiceLocator.Current.GetInstance(typeof(CompositionContainer));