AutoMapper TypeConverter将可空类型映射到不可空类型 [英] AutoMapper TypeConverter mapping nullable type to not-nullable type

查看:399
本文介绍了AutoMapper TypeConverter将可空类型映射到不可空类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用AutoMapper,我已经注册了一个TypeConverter将可空的长值映射为长整型值,例如:

I'm using AutoMapper, and I've registered a TypeConverter to map nullable long values to long values like so:

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



此操作正常,并自动选择任何可空的长

This works fine, and automatically picks up any nullable longs being converted to longs.

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

However, I've got some other maps which want to 'convert' nullable longs to nullable longs. These also end up using this type converter. For example, both properties are getting set to 0 in the code below, but I'd expect NullableLong to be set to null. Am I doing something wrong?

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?的转换器?

You've only registered a converter that maps from long? to long. Don't you just need to create and register a 'converter' that will map from long? to long??

这篇关于AutoMapper TypeConverter将可空类型映射到不可空类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆