Injecting AutoMapper dependencies using Ninject

后端 未结 3 1990
我寻月下人不归
我寻月下人不归 2021-02-08 10:37

I am having trouble injecting AutoMapper into an ASP.NET MVC 2 application using Ninject. I used Jimmy Bogard\'s post on AutoMapper and StructureMap type Configuration as a guid

相关标签:
3条回答
  • 2021-02-08 11:20

    You can do this is a one liner using the latest version (currently 2.2.0).

    kernel.Rebind<IMappingEngine>().ToMethod(context => Mapper.Engine);
    

    As an extra, I do agree with fodonnel, adding a facade to hide the Automapper interface is a good idea, however I wouldn't take the signatures directly from Automapper, unless you need all that functionality.

    0 讨论(0)
  • 2021-02-08 11:25

    I got it working but it doesn't feel very clean creating an instance of the Configuration class. Any suggestions to clean it up further.

            Bind<ITypeMapFactory>().To<TypeMapFactory>();
            Bind<Configuration>().ToConstant(new Configuration(Kernel.Get<ITypeMapFactory>(), MapperRegistry.AllMappers())).InSingletonScope();
            Bind<IConfiguration>().ToMethod(c => c.Kernel.Get<Configuration>());
            Bind<IConfigurationProvider>().ToMethod(c => c.Kernel.Get<Configuration>());
            Bind<IMappingEngine>().To<MappingEngine>();
    
    0 讨论(0)
  • 2021-02-08 11:31

    It might also be a good idea to introduce a mapping facade. Instead of passing IMappingEngine through out your code create an IObjectMapper interface. The interface I use contains method signatures taken directly out of automappers code.

    public interface IObjectMapper
    { 
      TDestination Map(TSource source);
      TDestination Map(TSource source, TDestination destination);
      object Map(object source, Type sourceType, Type destinationType);
      object Map(object source, object destination, Type sourceType, Type destinationType);
    }
    

    Your configuration is still going to be automapper dependent.

    A blog post I wrote on it is here: http://fodonnel.wordpress.com/2010/09/20/an-object-mapper-facade/

    0 讨论(0)
提交回复
热议问题