Prism - loading modules causes activation error
Posted
by
Noich
on Stack Overflow
See other posts from Stack Overflow
or by Noich
Published on 2011-11-27T09:15:36Z
Indexed on
2011/11/27
9:51 UTC
Read the original article
Hit count: 530
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));
© Stack Overflow or respective owner