で継承を使用する方法を調べてきましたが、AutoMapper
完全に機能させるのに苦労していLinq
ます。これが私のコードです:
ここでマッピングを定義しました:
CreateMap<Article, ArticleDetailsViewModel>()
.Include<Article, ArticleNewsItemDetailsViewModel();
CreateMap<Article, ArticleNewsItemDetailsViewModel>();
ArticleDetailsViewModel
の基本クラスですArticleNewsItemDetailsViewModel
。
私が持っていた場合、ここに問題があります:
CreateMap<ArticleNewsItem, ArticleNewsItemDetailsViewModel>();
ビュー モデルのすべてのプロパティは、対応する Linq オブジェクトと同じ名前であるため、自動的にマップされます。ただし、Article => ArticleNewsItemDetailsViewModel
マッピングを使用しているため、これは不可能です。代わりに、それぞれを次のように定義する必要があります。
.ForMember(x => x.Property1, opt => opt.MapFrom(src => src.ArticleNewsItem.Property1)
すべてのプロパティを からArticleNewsItemDetailsViewModel
新しいビュー モデルに移動し、そのクラスを 内のプロパティにすることを考えましArticleNewsItemDetailsViewModel
た。これら 2 つのオブジェクト間にマッピングがある限り、それは機能しますが、あまりクリーンではありません。
これを回避する方法はありますか?