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: 532

Filed under:
|
|

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

Related posts about prism

Related posts about MEF