2012-09-21 25 views
8

पंजीकरण करने वाला सरल इंजेक्टर पहले मैंने ऑटोफैक का उपयोग किया था, लेकिन अब मैं सरल इंजेक्टर को आज़मा देना चाहता हूं। मेरे समस्या यह है, मेरी विधि के भीतर mappingEngine मैं निम्नलिखित त्रुटि मिलती है बुला पर:इंपैपिंगइंजिन (ऑटोमैपर)

Missing type map configuration or unsupported mapping.

Mapping types: Something -> SomethingDto Destination path: IEnumerable`1[0]

Source value:

_mappingEngine.Map<IEnumerable<SomethingDto>>(IEnumerableOfSomething); 

^-- doesn't work 

Mapper.Map<IEnumerable<SomethingDto>>(IEnumerableOfSomething); 

^-- works (That's not what I want) 

Mapper.Map नहीं है कि मैं क्या चाहता हूँ। इम दर्ज की Automapper यह यहाँ के आधार पर:

Replace Ninject with Simple Injector

container.Register<ITypeMapFactory, TypeMapFactory>(); 
container.RegisterAll<IObjectMapper>(
    MapperRegistry.AllMappers()); 
container.RegisterSingle<ConfigurationStore>(); 
container.Register<IConfiguration>(() => 
    container.GetInstance<ConfigurationStore>()); 
container.Register<IConfigurationProvider>(() => 
    container.GetInstance<ConfigurationStore>()); 
container.Register<IMappingEngine, MappingEngine>(); 

Mapper.Initialize(x => 
      { 
       var profiles = container.GetAllInstances<Profile>(); 

       foreach (var profile in profiles) 
       { 
        x.AddProfile(profile); 
       } 
      }); 

     Mapper.AssertConfigurationIsValid(); 

मेरा प्रश्न IST, मैं कैसे SimpleInjector में IMappingEngine रजिस्टर और मेरे प्रोफाइल को सही ढंग से कैसे जोड़ूँ?

अग्रिम धन्यवाद!

स्वागत करती है

उत्तर

8

हल mtrax! :-)

एमवीसी कंट्रोलर फैक्ट्री को ध्यान में रखते हुए मैंने अपनी प्रोफाइल बहुत देर से पंजीकृत की। मुझे उम्मीद है कि मेरा छद्म उदाहरण आपको ऐसी गलती को रोकने में मदद करता है।

// SimpleInjector 
var container = new Container(); 

// AutoMapper registration 
container.Register<ITypeMapFactory, TypeMapFactory>(); 
container.RegisterCollection(MapperRegistry.Mappers); 
container.RegisterSingleton<ConfigurationStore>(); 
container.Register<IConfiguration>(container.GetInstance<ConfigurationStore>); 
container.Register<IConfigurationProvider>(container.GetInstance<ConfigurationStore>); 
container.RegisterSingleton(() => Mapper.Engine); 

// AutoMapper Profiles registration 
container.RegisterCollection<Profile>(new MappingAProfile(), 
             new MappingBProfile(), 
             new MappingCProfile()); 

// Adding AutoMapper profiles 
Mapper.Initialize(x => 
    { 
     var profiles = container.GetAllInstances<Profile>(); 

     foreach (var profile in profiles) 
     { 
      x.AddProfile(profile); 
     } 
    }); 

Mapper.AssertConfigurationIsValid(); 

container.Verify(); 

container.RegisterAsMvcControllerFactory(); 

* RegisterAsMvcControllerFactory() पर लगाने के लिए: Simple Injector MVC Integration Guide

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^