2017-04-22 61 views
0

我收到此注射器錯誤如何使用Ninject將AutoMapper映射器替換爲IMapper?

錯誤激活IConfigurationProvider 沒有匹配的綁定可用,並且該類型不可自行綁定。 激活路徑:依賴IConfigurationProvider的 3)注入類型映射的構造函數的參數configurationProvider 2)依賴IMapper的注入型myController的 1)請給myController的

我的全球ASX的構造函數的參數映射

Mapper.Initialize(c => c.AddProfile<MappingProfile>()); 

我的映射分佈

public class MappingProfile : Profile 
    { 
    public MappingProfile() 
    { 
     CreateMap<Obj, ObjBO>().ReverseMap(); 
    } 
    } 

我控制器

private readonly IMapper _mapper; 

    public MyController(IMapper mapper) 
    { 

     _mapper = mapper; 
    } 

嘗試使用映射器這樣

 IEnumerable<ObjBO> list = _repo.GetObjs(); 
     IEnumerable <Obj> mappedList= _mapper.Map<IEnumerable<Obj>>(list); 

我嘗試添加這你綁定用於構建映射器的新實例爲每個請求NinjectWebCommons

   private static void RegisterServices(IKernel kernel) 
       { 
        kernel.Bind<IMapper>().To<Mapper>().InRequestScope(); 
       } 
+0

的[AutoMapper 4.2和3.2 Ninject]可能的複製(http://stackoverflow.com/questions/35233989/automapper-4-2-and -ninject-3-2) – BatteryBackupUnit

回答

0

,但你已經配置了一個靜態的Mapper。這是一個類似於我正在使用的配置。

kernel.Bind<IMapper>() 
    .ToMethod(context => 
    { 
     var config = new MapperConfiguration(cfg => 
     { 
      cfg.AddProfile<MappingProfile>(); 
      // tell automapper to use ninject when creating value converters and resolvers 
      cfg.ConstructServicesUsing(t => kernel.Get(t)); 
     }); 
     return config.CreateMapper(); 
    }).InSingletonScope(); 

然後,您可以刪除您的靜態配置

Mapper.Initialize(c => c.AddProfile<MappingProfile>());