使用 AutoMapper 库将一个类的属性转换为另一个类的属性时,有时可能只需要转换一个特定的属性。这可以通过在 CreateMap() 方法中使用 ForMember() 方法来实现。
例如,假设有一个源类 User 和目标类 UserDto,它们都有一个名为 BirthDate 的日期属性。但是,User 类中的 BirthDate 属性存储为 Unix 时间戳,而 UserDto 类中的 BirthDate 属性存储为 DateTime 类型。在这种情况下,只需要将 User 类中的 BirthDate 转换为 DateTime 类型即可。
下面是一个示例代码:
// 定义源类
public class User
{
public long BirthDate { get; set; }
}
// 定义目标类
public class UserDto
{
public DateTime BirthDate { get; set; }
}
// 创建 AutoMapper 映射
var mapperConfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap()
.ForMember(dest => dest.BirthDate, opt => opt.MapFrom(src => DateTimeOffset.FromUnixTimeMilliseconds(src.BirthDate).DateTime));
});
var mapper = mapperConfig.CreateMapper();
// 使用 AutoMapper 将 User 转换为 UserDto
var user = new User { BirthDate = 1609459200000 }; // 2021-01-01 00:00:00 UTC
var userDto = mapper.Map(user);
Console.WriteLine(userDto.BirthDate); // 输出:2021/1/1 8:00:00
在上面的示例中,使用 ForMember() 方法定义了如何将 User 类中的 BirthDate 转换为 UserDto 类中的 BirthDate。具体而言,它使用 DateTimeOffset.FromUnixTimeMilliseconds() 方法将 Unix 时间戳转换为 DateTime 类型。注意,这个转换只应该应用于 BirthDate 属性。