将容器映射到容器的自动映射器
Automapper to map Container to Containee
我对 Automapper 有点陌生,所以我可能会尝试将它用于一些不应该用于的事情,但就这样吧。我有两个 类 :
public class Container
{
public int Id { get; set; }
public string Code { get; set; }
public string StrVal { get; set; }
public DateTime Date { get; set; }
public Containee Containee { get; set; }
}
public class Containee
{
public int Id { get; set; }
public decimal Value { get; set; }
public string DifferentStr { get; set; }
public DateTime birthday { get; set; }
}
我有一个看起来像这样的 DTO :
public class ContaineeDTO
{
public int Id { get; set; }
public decimal Value { get; set; }
public string DifferentStr { get; set; }
public DateTime birthday { get; set; }
public string Code { get; set; }
}
我想做的是使用 Automapper 将我的 Container 映射到我的 ContaineeDTO。我觉得这应该使用解析器,尤其是将代码从 Container 传递到 Containee DTO,但我不确定如何继续,我们将不胜感激。
您可以将此配置放在 Startup.cs
:
var config = new MapperConfiguration(
cfg => cfg.CreateMap<Container, ContaineeDTO>()
.ForMember(containeeDto => containeeDto.Value, opt =>
opt.MapFrom(container => container.Containee.Value))
.ForMember(containeeDto => containeeDto.DifferentStr, opt =>
opt.MapFrom(container => container.Containee.DifferentStr))
.ForMember(containeeDto => containeeDto.birthday, opt =>
opt.MapFrom(container => container.Containee.birthday));
重要 注意:您在两个 类 中将属性命名为相同,因此没有必要在映射定义中提供它们的名称(如您所见,我没有'不要这样做)
我对 Automapper 有点陌生,所以我可能会尝试将它用于一些不应该用于的事情,但就这样吧。我有两个 类 :
public class Container
{
public int Id { get; set; }
public string Code { get; set; }
public string StrVal { get; set; }
public DateTime Date { get; set; }
public Containee Containee { get; set; }
}
public class Containee
{
public int Id { get; set; }
public decimal Value { get; set; }
public string DifferentStr { get; set; }
public DateTime birthday { get; set; }
}
我有一个看起来像这样的 DTO :
public class ContaineeDTO
{
public int Id { get; set; }
public decimal Value { get; set; }
public string DifferentStr { get; set; }
public DateTime birthday { get; set; }
public string Code { get; set; }
}
我想做的是使用 Automapper 将我的 Container 映射到我的 ContaineeDTO。我觉得这应该使用解析器,尤其是将代码从 Container 传递到 Containee DTO,但我不确定如何继续,我们将不胜感激。
您可以将此配置放在 Startup.cs
:
var config = new MapperConfiguration(
cfg => cfg.CreateMap<Container, ContaineeDTO>()
.ForMember(containeeDto => containeeDto.Value, opt =>
opt.MapFrom(container => container.Containee.Value))
.ForMember(containeeDto => containeeDto.DifferentStr, opt =>
opt.MapFrom(container => container.Containee.DifferentStr))
.ForMember(containeeDto => containeeDto.birthday, opt =>
opt.MapFrom(container => container.Containee.birthday));
重要 注意:您在两个 类 中将属性命名为相同,因此没有必要在映射定义中提供它们的名称(如您所见,我没有'不要这样做)