【发布时间】:2017-11-22 15:06:58
【问题描述】:
我正在使用 Automapper 6.2.0,并且我有以下类:
public class User
{
public Address Address { get; set; }
}
public class Address
{
public string Street { get; set; }
}
public class UserDto
{
public string AddressStreet { get; set; }
}
我的映射配置如下:
CreateMap<UserDto, User>()
.ForPath(dest => dest.Address.Street, opt => opt.Condition(cond => !string.IsNullOrEmpty(cond.Source.AddressStreet)))
.ForPath(dest => dest.Address.Street, opt => opt.MapFrom(src => src.AddressStreet));
我像这样将 UserDto 映射到 User:
var userDto = new UserDto{ AddressStreet = null };
var user = mapper.Map<User>(userDto);
var address = user.Address;//I expect the prop to be null, since the mapping condition is not met...
这会生成一个 user.Address 对象实例,其中 Street 设置为 null。我宁愿 user.Address 根本不被实例化。
【问题讨论】:
-
我也有同样的问题。人们会认为,当条件为假时,行为将与根本没有为
Address.Street定义映射时相同。似乎是 Automapper 中的一个错误。 -
@thatWiseGuy 根据创作者的说法,这是设计使然...github.com/AutoMapper/AutoMapper/issues/2429
标签: c# automapper