4

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

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

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

Mapper.CreateMap<TestModel, IndexViewModel>();

但是,这似乎不起作用。我收到“IndexViewModel”没有默认构造函数的错误。

我可以通过明确告诉 automapper 在映射中使用 ninject 来使映射器工作。

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

但是,我宁愿不必为每个映射都这样做。我错过了什么吗?

4

1 回答 1

1

只需在初始化代码的某处创建一个函数来为您执行此操作

void CreateMapWithServiceLocator<T1,T2>()
{
     Mapper.CreateMap<T1,T2>().ConstructUsingServiceLocator();
} 
于 2013-01-18T08:51:42.133 回答