I’m using Composite Application Library (CAL) in a project. I decided to use AutoMapper as well. I put AutoMapper’s Mapper.CreateMap<source, dest>() calls into one of the Bootstrapper.cs methods. I got an InvalidOperationException in the ModuleCatalog’s InnerLoad() function.
Reason
AutoMapper creates an in-memory assembly and CAL tries to read all the assemblies’ Location property. This property raises an InvalidOperationException in case of in-memory assemblies.
Solution
Insert AutoMapper mappings right after the Bootstrapper.Run() call. In my case I call this in App.xaml.cs, so you can write the following:
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // Run bootstrapper Bootstrapper bootstrapper = new Bootstrapper(); bootstrapper.Run(); // AutoMapper mappings Parallel.Invoke(CreateAutoMapperMappings); } /// <summary> /// Creates the AutoMapper mappings. /// </summary> private static void CreateAutoMapperMappings() { Mapper.CreateMap<Source, Dest>(); }
No comments:
Post a Comment