2011-05-09 19 views
7

OtomatikMapper kullanılarak eşlenen bir kaynak ve hedef sınıfım var mı? Hedef, yapıcıya enjekte edilmiş bir günlük kaydı hizmetine sahiptir.Bir AutoMapper hedef sınıfına hizmet enjekte

Ancak, StructureMap aracılığıyla yapıcıya servise enjekte edilen hizmeti nasıl alacağımı bilmiyorum? Hizmetin düzgün enjekte varlık değildir çünkü haritalama çağrısı istisna olması beni engellemedi

Mapper.Initialize(m => 
{     
    m.ConstructServicesUsing(ObjectFactory.GetInstance); 
}); 

sanırım:

aşağıdaki denedim.

Ben de denedim şu:

CreateMap<Source, Dest>() 
.ConstructUsing(x=> ObjectFactory.GetInstance<ILoggerService>()); 

Ama hatayı alıyorum: tip temsilci Lamda ifadesini dönüştürebilirsiniz değil, henüz tüm örnekler ben kullanacağım bu yöntemi gördünüz mü?

cevap

5

ConstructUsing'e ilettiğiniz lambda, hedef türünün bir örneğini döndürmelidir. Yani sizin durumda, bunu yapmak isteyeyim:

CreateMap<Source, Dest>() 
.ConstructUsing(x=> ObjectFactory.GetInstance<Dest>()); 

doğru StructureMap kurulum varsayarsak, bu Dest nesnesi oluşturmak ve sizin için ILoggerService enjekte edilmelidir.

+0

! Teşekkürler. – jaffa

4

Ayrıca yapabilirsiniz: Mükemmel

 Mapper.Configuration.ConstructServicesUsing(container.Resolve); 

     Mapper.CreateMap<Source, Dest>().ConstructUsingServiceLocator(); 
+0

İlgilenilen ürün, fabrikadan geçmek yerine, nesne yalnızca çözüldüğünden, seçilen cevaptan daha hızlı olur mu? – Worthy7