AutoMapper全局配置-默认情况下将空数组属性转换为空数组

时间:2019-05-22 14:01:25

标签: c# automapper

我正在将AutoMapper从版本3升级到8,并且在null转换行为已更改的情况下,我进行了一些坏的测试。我仍在使用静态API。以前,当我有一个对象要使用int[]的{​​{1}}属性进行映射而未指定null转换时,它将创建一个空数组。考虑以下类:

ForMember

调用以下代码会导致 public class From { public int[] Ids { get; set; } } public class To { public int[] Ids { get; set; } } 中的异常:

AutoMapper

例外: var from = new From { Ids = null }; var @to = Mapper.Map<From, To>( from ); //KABOOM!!! Assert.NotNull( @to.Ids );

当它们像这样映射时:

System.ArgumentException : System.Int32[] needs to have a constructor with 0 args or only optional args.

我试图像这样为Mapper.Initialize( config => { config.CreateMap<From, To>(); config.AllowNullDestinationValues = false; config.AllowNullCollections = true; config.CreateMissingTypeMaps = true; } ); 添加一个显式转换器,但是它不起作用:

int[]

我还尝试删除了config.CreateMap<int[], int[]>().ConvertUsing( x => x ?? new int[ 0 ] );行,但它仍然无法正常工作。

我知道我可以添加一个CreateMap<From, To>()映射来实现此目的,但是根据此行为,我们可能隐含数百种类型,因此我希望能够对其进行全局配置/使其保持原状。

有什么想法吗?

0 个答案:

没有答案