带有 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();
但是,我宁愿不必为每个映射执行此操作。我错过了什么吗?
只需创建一个函数即可在初始化代码中的某个位置为您执行此操作
void CreateMapWithServiceLocator<T1,T2>()
{
Mapper.CreateMap<T1,T2>().ConstructUsingServiceLocator();
}