2つのエンティティをマップしようとしています。 1つは文字列のリストを持ち、もう1つはカスタムコレクションを使用しています。オートマッパーを使ってこれらの2つのエンティティをどのようにマップすることができますか?ここでAutomapper CustomCollectionへのリスト
public class SourceItem
{
public string Name { get; set; }
public List<string> ShipsTo { get; set; }
}
public class DestItem
{
public string Name { get; set; }
public MyCollection ShipsTo { get; set; }
}
public class MyCollection : CollectionBase
{
private readonly List<string> _list;
public MyCollection()
{
_list = new List<string>();
}
public MyCollection(List<string> list)
{
_list = list;
}
public void Add(string item)
{
_list.Add(item);
}
}
私のマッピングコードはここ
Mapper.Initialize(cfg =>
{
cfg.CreateMap<SourceItem, DestItem>()
.ForMember(d => d.ShipsTo, o => o.ResolveUsing<CustomResolver>());
});
は私のカスタムリゾルバが
私はこのコードを実行しようとすると、私が取得public class CustomResolver : IValueResolver<SourceItem, DestItem, MyCollection>
{
public MyCollection Resolve(SourceItem source, DestItem destination, MyCollection destMember, ResolutionContext context)
{
return new MyCollection(source.ShipsTo);
}
}
...どのように見えるかです...ですエラーが発生しました
型の間で強制演算子が定義されていません 'System.Collections.Generic.List`1 [System.Object]'および 'MyCollection'。
本当にありがとうございます。
Automapperにはバグがあります。しかし、とにかく、なぜCollectionBaseを継承する必要がありますか? –
@SergeyBerezovskiyこれは一例です。実際に私はサードパーティのAPI(eBay SDK)を使用していますが、私が投稿した例のようにCollectionBaseを使用しているコレクションがたくさんあります。カスタムコレクションを変更することはできません。 – nafr1