gpt4 book ai didi

c# - 如何将 Mapper.Map 与 ConstructUsing 和 AutoMapper 一起使用?

转载 作者:太空狗 更新时间:2023-10-29 21:16:51 27 4
gpt4 key购买 nike

我有一个简单的问题:如何在 ConstructUsing 中使用 Mapper.Map?我正在使用 AutoMapper v4.1.1,我有这段代码,我想通过重用代码来清理。

Mapper.CreateMap<SKU, SKUViewModel>()
.ConstructUsing(m => new SKUViewModel(
(from texts in m.DescriptionTranslation.TranslationTexts
select new TranslationTuple
{
LanguageId = texts.LanguageId,
LanguageDisplayName = texts.Language.DisplayName,
TranslationText = texts.Text,
NeutralText = texts.NeutralText,
ThreeLetterIsoLanguageName = texts.Language.ThreeLetterISOLanguageName
}).ToList(),
(from texts in m.DisplayNameTranslation.TranslationTexts
select new TranslationTuple
{
LanguageId = texts.LanguageId,
LanguageDisplayName = texts.Language.DisplayName,
TranslationText = texts.Text,
NeutralText = texts.NeutralText,
ThreeLetterIsoLanguageName = texts.Language.ThreeLetterISOLanguageName
}).ToList(),
(from texts in m.PaypalDescriptionTranslation.TranslationTexts
select new TranslationTuple
{
LanguageId = texts.LanguageId,
LanguageDisplayName = texts.Language.DisplayName,
TranslationText = texts.Text,
NeutralText = texts.NeutralText,
ThreeLetterIsoLanguageName = texts.Language.ThreeLetterISOLanguageName
}).ToList()));

我知道我们可以将 Mapper.MapAfterMap 方法一起使用,如下所示 .AfterMap((s, d) => Mapper.Map(s.公司简介, d));

但我无法在 ConstructUsing 中执行相同的操作。

有什么建议吗?

大卫

最佳答案

因为您已经为这些实体定义了映射,所以您可以在其上调用 Mapper.Map。例如:

Mapper.CreateMap<SKU, SKUViewModel>()
.ConstructUsing(m =>
{
var descriptions = Mapper.Map<List<TranslationTuple>>(m.DescriptionTranslation.TranslationTexts);
var displays = Mapper.Map<List<TranslationTuple>>(m.DisplayNameTranslation.TranslationTexts);
var paypals = Mapper.Map<List<TranslationTuple>>(m.PaypalDescriptionTranslation.TranslationTexts);

return new SKUViewModel(descriptions, displays, paypals);
});

然后,当你需要创建一个由automapper映射的对象时,只需使用:

var viewModel = Mapper.Map<List<SKUViewModel>>(sku);

类似ConstructUsing 的方法, AfterMap , BeforeMap是在您定义了所有内容之后执行的方法。所以,按照这个逻辑,它应该执行 Mapper.Map<>没有问题。

关于c# - 如何将 Mapper.Map 与 ConstructUsing 和 AutoMapper 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com