gpt4 book ai didi

c# - 如果对象成员没有值,如何为对象分配 null - automapper c#

转载 作者:行者123 更新时间:2023-12-05 08:50:55 24 4
gpt4 key购买 nike

我在 C# 中使用自动映射器。

class A 
{
public int Value { get; set; }
public string Code { get; set; }
public B? Details { get; set; }
}

class B
{
public int Id { get; set;}
public string Name { get; set; }
}

class C
{
public int Value { get; set; }
public string Code { get; set; }
public int? DetailId { get; set; }
public string? DetailName { get; set; }
}

在 automapper 中我使用如下:

CreateMap<C, A>()
.ForPath(o => o.Details.Id, b => b.MapFrom(z => z.DetailId))
.ForPath(o => o.Details.Name, b => b.MapFrom(z => z.DetailName))
.ReverseMap();

当我像上面的映射一样使用时,我得到类似的输出

  "details ": {
"id": 0,
"name": ""
}

如果它的成员没有值,我需要将 Details 值获取为 null 而不是对象类型。即)DetailIdDetailName 没有值。如何得到这个?

  "details" : null

最佳答案

您可以使用条件映射

    var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<C, B>()
.ForMember(o => o.Id, b => b.MapFrom(z => z.DetailId))
.ForMember(o => o.Name, b => b.MapFrom(z => z.DetailName));

cfg.CreateMap<C, A>()
.ForMember(o => o.Details, b => b.MapFrom((c, a, obj, context) => !string.IsNullOrEmpty(c.DetailName) ? context.Mapper.Map<B>(c) : null))
.ReverseMap();
});

关于c# - 如果对象成员没有值,如何为对象分配 null - automapper c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61006612/

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