自动映射IEnumerable <something>到IEnumerable <somethingelse>而不创建地图配置</somethingelse> </something>

时间:2014-06-11 06:22:06

标签: c# automapper-3

我无法使用以下内容,其中array是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)的配置wiki,但我不明白为什么这是必要的。 Automapper所需的一切都在命令中定义。它是哪种类型(对象和列表),以及我希望它映射到哪个对象。

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

我的异常听起来像这样:

  

缺少类型地图配置或不支持的映射   映射类型:\ r \ nCustomerContract - &gt;客户\ r \ nStimline.Xplorer.Repository.CustomerService.CustomerContract - &gt; Stimline.Xplorer.BusinessObjects.Customer
  目的地路径:列表`1 [0]
  来源价值:Stimline.Xplorer.Repository.CustomerService.CustomerContract

1 个答案:

答案 0 :(得分:14)

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

首先注册您的映射(请参阅&#34;缺少类型映射配置或不支持的映射&#34;) 您必须使用CreateMap一次性能

Mapper.CreateMap<something, somethingelse>();

而不是:

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

试试这个:

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

Mapper.Map<Customer[]>(array);