Listメンバーを持つオブジェクトをマージしています。私はAutoMapperにnullソースメンバーを無視するように指示していますが、nullコレクションを持つオブジェクトをマージすると、(マップの前に項目があるにもかかわらず)宛先が空のコレクションを取得します。nullソースコレクションの空の宛先コレクション
これを防止する方法についてのご意見はありますか?
ConfigurationInfo template1 = new ConfigurationInfo() {
Columns = null //1st templates list of columns is null
};
ConfigurationInfo template2 = new ConfigurationInfo() {
Columns = new List<ColumnInfo>()
};
template2.Columns.AddRange(existingColumns); //template2.Columns.Count == 9
ConfigurationInfo template3 = new ConfigurationInfo() {
Columns = null //3rd templates list of columns is null
};
var config = new AutoMapper.MapperConfiguration(cfg => {
cfg.AllowNullCollections = true;
cfg.AllowNullDestinationValues = true;
cfg.CreateMap<ConfigurationInfo, ConfigurationInfo>()
.ForAllMembers(option => {
//explicitly telling automapper to ignore null source members...
option.Condition((source, destination, sourceMember, destMember) => sourceMember != null);
});
});
var mapper = config.CreateMapper();
ConfigurationInfo finalTemplate = new ConfigurationInfo();
mapper.Map(template1, finalTemplate);
//finalTemplate.Columns == null, which is exptected
mapper.Map(template2, finalTemplate);
//finalTemplate.Columns.Count == 9, still exptected
mapper.Map(template3, finalTemplate);
//finalTemplate.Columns.Count == 0, expecting 9 b/c 3rd template.Columns == null so AutoMapper should ignore. why is this happening?