簡體   English   中英

Automapper-忽略基於源屬性子項的映射

[英]Automapper - ignoring mapping based on source property child item

以下是我的來源類型。 在這種情況下,當成分為null或Count()== 0時,如何忽略Pizza元素的映射?

class Menu
{
    public Pizza[] Pizzas { get; set; }
}

class Pizza
{
    public string Name { get; set; }

    public Ingredient[] Ingredients { get; set; }
}

class Ingredient
{
    public int Id { get; set; }

    public string Name { get; set; }
}


CreateMap<Menu, MenuVM>();
CreateMap<Pizza PizzaVM>();
CreateMap<Ingredient, IngredientVM>();

如果您想返回“忽略”,則可以執行以下操作(建議):

Mapper.CreateMap<Pizza, PizzaVM>()
    .ForMember(dest => dest.Ingredients, opt => opt.Condition(source => string.IsNullOrEmpty(src.Ingredients) || src.Ingredients.Count() == 0))

否則,您可以像下面那樣創建ValueResolver,但是您需要將true / false結果存儲在新字段中:

public class PizzaIngredientResolver : ValueResolver<Pizza, bool>
{
    protected override bool ResolveCore(Pizza src)
    {
        return !string.IsNullOrEmpty(src.Ingredients) && src.Ingredients.Count() != 0;
    }
}

然后,您需要調用MappingConfiguration:

.ForMember(dest => dest.IsIngredientVisible, opts => opts.ResolveUsing<PizzaIngredientResolver>())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM