gpt4 book ai didi

c# - AutoMapper TypeConverter 将可空类型映射到不可空类型

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:58 25 4
gpt4 key购买 nike

我正在使用 AutoMapper,并且我已经注册了一个 TypeConverter 来将可为 null 的长值映射到长值,如下所示:

public class NullableLongToLongConverter : TypeConverter<long?, long>
{
protected override long ConvertCore(long? source)
{
return source ?? 0;
}
}

这工作正常,并自动拾取任何正在转换为长整数的可为空的长整数。

但是,我有一些其他映射想要将可为空的长整型“转换”为可为空的长整型。这些最终也使用了这种类型的转换器。例如,在下面的代码中,这两个属性都设置为 0,但我希望 NullableLong 设置为 null。我做错了什么吗?

public class Foo
{
public long? NullableLong{get {return null;}}
......
}

public class Bar
{
public long NotNullableLong{get;set;}
public long? NullableLong{get;set;}
......
}

public static class ComplicatedMapRegister
{
public static void RegisterMap()
{
Mapper.CreateMap<Foo, Bar>()
.ForMember(b => b.NotNullableLong, opt => opt.MapFrom(f.NullableLong))
.ForMember(b => b.NullableLong, opt => opt.MapFrom(f.NullableLong))
.....
}
}

public static class AutoMapperRegistration
{
public static void RegisterAllMaps()
{
Mapper.CreateMap<long?, long>().ConvertUsing<NullableLongToLongConverter>();
ComplicatedMapRegister.RegisterMap();
}
}

最佳答案

您只注册了一个从 long? 映射到 long 的转换器。难道您只需要创建并注册一个将从 long? 映射到 long? 的“转换器”吗?

关于c# - AutoMapper TypeConverter 将可空类型映射到不可空类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8806771/

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