2

Je travaille actuellement sur un grand projet ASP.NET MVC 5 et j'implémente DI en utilisant le framework Ninject pour MVC. En fait, c'est la première fois que j'utilise Ninject et j'ai vraiment besoin de savoir quelle est la meilleure pratique pour utiliser AutoMinder 5.2.0 avec. Après Google, j'ai trouvé quelques exemples qui démontrent une ancienne version d'AutoMapper qui ont des méthodes obsolètes dans la nouvelle version.Comment utiliser AutoMApper.5.2.0 avec Ninject?

Ma solution est composée des projets suivants:

  1. base
  2. données
  3. service
  4. Web

Je travaille sur le même projet dans ce link.

+0

Il n'y a pas une telle chose comme la meilleure pratique, avoir une lecture [ici] (http://meta.stackoverflow.com/questions/265928/is-a-best-practice-question-off-topic). Il y a seulement des cas d'utilisation et des besoins d'affaires sur comment vous voulez/devez le mettre en application ... Si vous nous dites plus de détails nous pourrions probablement vous donner des réponses concrètes. – kayess

+0

Merci pour votre aide, voici le projet sur lequel je travaille http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pattern-and-dep/ – Morz

+0

Dans quelle couche voulez-vous faire la cartographie? – kayess

Répondre

4

Il y a trois choses que vous devez configurer pour AutoMapper dans Ninject.

  1. bind() AutoMapper.IMapper
  2. Instruire AutoMapper à utiliser Ninject pour ses services, et
  3. initialize avec vos AutoMapper applications.

est ici le NinjectModule J'utilise à cet effet:

public class AutoMapperModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<IMapper>().ToMethod(AutoMapper).InSingletonScope(); 
    } 

    private IMapper AutoMapper(Ninject.Activation.IContext context) 
    { 
     Mapper.Initialize(config => 
     { 
      config.ConstructServicesUsing(type => context.Kernel.Get(type)); 

      config.CreateMap<MySource, MyDest>(); 
      // .... other mappings, Profiles, etc.    

     }); 

     Mapper.AssertConfigurationIsValid(); // optional 
     return Mapper.Instance; 
    } 
} 

alors vous simplement injecter AutoMapper.IMapper dans vos classes au lieu d'utiliser la statique Mapper

+0

btw, c'est avec AutoMapper 4.2.1. J'espère que ce n'est pas trop différent dans v5 –

+1

Merci beaucoup, votre réponse m'a aidé à donner un sens à certaines choses mystérieuses. – Morz