2

Ich arbeite heute an einem großen ASP.NET MVC 5 Projekt und implementiere DI mithilfe von Ninject Framework für MVC. Eigentlich ist es das erste Mal, dass ich Ninject benutze und ich muss dringend wissen, was die beste Methode ist, AutoMapper 5.2.0 zu verwenden.Wie verwendet man AutoMapper.5.2.0 mit Ninject?

Nach dem Googeln habe ich einige Beispiele gefunden, die eine alte Version von AutoMapper zeigen, die veraltete Methoden in der neuen Version haben.

Meine Lösung setzt sich aus folgenden Projekten bestehen:

  1. Kern
  2. Daten
  3. Dienst
  4. Web

Ich bin auf dem gleichen Projekt in diesem link arbeiten.

+0

Es zu verwenden, ist nicht so etwas wie Best Practice, Lesen Sie [hier] (http://meta.stackoverflow.com/questions/265928/is-a-best-practice-question-off-topic). Es gibt nur Anwendungsfälle und Geschäftsanforderungen, wie Sie es umsetzen wollen/müssen. Wenn Sie uns weitere Details nennen, könnten wir Ihnen wahrscheinlich konkrete Antworten geben. – kayess

+0

Vielen Dank für Ihre Hilfe, dies ist das Projekt, an dem ich gerade arbeite. http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-sowing-the-generic-repository-pattern-and-dep/ – Morz

+0

In welcher Ebene möchten Sie mappen? – kayess

Antwort

4

Es gibt drei Dinge, die Sie in Ninject für AutoMapper einrichten müssen.

  1. Bind() AutoMapper.IMapper
  2. anweisen AutoMapper zu verwenden Ninject für ihre Dienstleistungen und
  3. AutoMapper mit Zuordnungen initialisieren.

hier ist die NinjectModule ich für diesen Zweck verwenden:

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; 
    } 
} 

dann werden Sie nur AutoMapper.IMapper in Ihren Klassen injizieren anstatt die statische Mapper

+0

BTW, das ist mit AutoMapper 4.2.1. Ich hoffe, es ist nicht so anders in v5 –

+1

Vielen Dank, Ihre Antwort hat mir geholfen, einige mysteriöse Dinge zu verstehen. – Morz

Verwandte Themen