8

我无法使以下工作,其中数组是 CustomerContract 的数组:

Mapper.Map<IEnumerable<Customer>>(array);

Mapper.Map<IEnumerable<CustomerContract>, IEnumerable<Customer>>(array);

Mapper.Map<Array, List<Customer>>(array);

在我看来,第一个例子应该足够了,但我无法工作。我已经阅读了 automapper 的配置维基(https://github.com/AutoMapper/AutoMapper/wiki/Configuration),但我不明白为什么这应该是必要的。Automapper 需要的一切都在命令中定义。它是哪种类型(对象和列表),以及我希望它映射到哪个对象。

我只是不了解 Automapper 的核心概念吗?

我的例外听起来像这样:

缺少类型映射配置或不支持的映射。
映射类型:\r\nCustomerContract -> Customer\r\nStimline.Xplorer.Repository.CustomerService.CustomerContract -> Stimline.Xplorer.BusinessObjects.Customer
目标路径:List`1[0]
源值:Stimline.Xplorer.Repository.CustomerService .客户合同

4

1 回答 1

17

您正在映射到 IEnumerable... Automapper 可以映射到具体类型而不是接口。

首先注册您的映射(请参阅“缺少类型映射配置或不支持的映射”)您必须使用 CreateMap 一次以提高性能

Mapper.CreateMap<something, somethingelse>();

代替:

Mapper.Map<IEnumerable<Customer>>(array);

尝试这个:

Mapper.Map<List<Customer>>(array);

或者

Mapper.Map<Customer[]>(array);
于 2014-06-11T06:32:11.397 回答