8

配列がCustomerContractの配列である場合、次を機能させることができません。

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

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

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

私の考えでは、最初の例で十分なはずですが、どちらも機能しません。automapper の構成 wiki ( 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 .CustomerContract

4

1 に答える 1

17

IEnumerable にマッピングしています... Automapper は、インターフェースではなく具象型にマッピングできます。

最初にマッピングを登録します (「タイプ マップ構成の欠落またはサポートされていないマッピング」を参照)。パフォーマンスのために、CreateMap を 1 回使用する必要があります。

Mapper.CreateMap<something, somethingelse>();

それ以外の:

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

これを試して:

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

また

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