带有 Ninject 的自动映射器

本文关键字:映射 Ninject 带有 | 更新日期: 2023-09-27 18:33:51

我一直在尝试设置AutoMapper以通过Ninject实例化所有对象。我的 global.asax 文件中有以下代码

Mapper.Configuration.ConstructServicesUsing(x => kernel.Get(x));

作为一个例子,我有以下映射

Mapper.CreateMap<TestModel, IndexViewModel>();

但是,这似乎不起作用。我收到一个错误,指出"索引视图模型"没有默认构造函数。

我可以通过显式告诉自动映射器在映射中使用 ninject 来让映射器工作。

Mapper.CreateMap<TestModel, IndexViewModel>().ConstructUsingServiceLocator();

但是,我宁愿不必为每个映射执行此操作。我错过了什么吗?

带有 Ninject 的自动映射器

只需创建一个函数即可在初始化代码中的某个位置为您执行此操作

void CreateMapWithServiceLocator<T1,T2>()
{
     Mapper.CreateMap<T1,T2>().ConstructUsingServiceLocator();
}