c0D*_*g1c 18 .net c# automapper
public class Person
{
Name { get; set; }
IEnumerable<Address> Addresses { get; set; }
}
public class PersonModel
{
Name { get; set; }
IEnumerable<AddressModel> Addresses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我映射Person到PersonModel这样:
Mapper.DynamicMap<Person, PersonModel>(person);
Run Code Online (Sandbox Code Playgroud)
如果Addresses属性on Person为null,则它们将映射PersonModel为空Enumerable而不是null.
如何获得PersonModelnull Addresses而不是空Enumerable?
Kir*_*man 33
简单的答案是使用AllowNullCollections:
AutoMapper.Mapper.Initialize(cfg =>
{
cfg.AllowNullCollections = true;
});
Run Code Online (Sandbox Code Playgroud)
或者如果您使用实例API
new MapperConfiguration(cfg =>
{
cfg.AllowNullCollections = true;
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 14
除了AllowNullCollections在映射器配置初始化中进行设置(如本答案中所述)之外,您还可以选择AllowNullCollections在Profile定义中进行设置,如下所示:
public class MyMapper : Profile
{
public MyMapper()
{
// Null collections will be mapped to null collections instead of empty collections.
AllowNullCollections = true;
CreateMap<MySource, MyDestination>();
}
}
Run Code Online (Sandbox Code Playgroud)
因此,使用Automapper可能有几种方法可以实现这一点,这只是一个:
Mapper.CreateMap<Person, PersonMap>()
.AfterMap( (src, dest) => dest.Addresses = dest.Addresses?.Any() ? dest.Addresses : null );
Run Code Online (Sandbox Code Playgroud)
此代码使用新的c#?.运算符来保证null安全性,因此如果您不能在代码中使用该功能,则可能需要删除它并检查null.
| 归档时间: |
|
| 查看次数: |
6656 次 |
| 最近记录: |