gpt4 book ai didi

c# - 如何使用 AutoMapper 忽略目标成员?

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:42 27 4
gpt4 key购买 nike

我有这两个类:

public class MyModel()
{
public int Id {get; set;}
public string Name {get; set;}
public bool IgnoreModel {get; set;}
}

public class MyDto()
{
public int Id {get; set;}
public string Name {get; set;}
public bool IgnoreDto {get; set;}
}

我想忽略 IgnoreModelIgnoreDto。我的映射如下所示:

Mapper.CreateMap<MyModel, MyDto>().Bidirectional()
.ForMember(model=> model.IgnoreModel, option => option.Ignore())
.ForSourceMember(dto => dto.IgnoreDto, option => option.Ignore());

其中 Bidirectional() 是一个扩展:

    public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}

但是,我得到一个错误,指出 IgnoreDto 没有被映射:

`未映射的成员被发现。查看下面的类型和成员。添加自定义映射表达式、忽略、添加自定义解析器或修改源/目标类型

MyModel -> MyDto(目标成员列表)ModelAssembly.MyModel -> DtoAssembly.MyDto(目标成员列表)

未映射的属性:忽略 Dto`

忽略这种映射的正确方法是什么?

最佳答案

在映射之后应用您的扩展(返回另一个对象)使您的映射规则应用于第二个映射。您的第一个映射没有应用任何规则。

要使其正常工作,请分别对每个映射使用忽略:

Mapper.CreateMap<MyModel, MyDto>()
.ForMember(model=> model.IgnoreModel, option => option.Ignore());

Mapper.CreateMap<MyDto, MyModel>()
.ForMember(model=> model.IgnoreDto, option => option.Ignore());

关于c# - 如何使用 AutoMapper 忽略目标成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28237745/

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