在使用Automapper进行映射时,如果有多个需要映射的成员具有相同的映射逻辑,可以使用Automapper提供的ForMember
方法来避免重复的方法调用。
下面是一个示例代码,演示了如何使用ForMember
方法来分别映射Automapper的成员:
using AutoMapper;
public class SourceClass
{
public int Property1 { get; set; }
public string Property2 { get; set; }
}
public class DestinationClass
{
public int Property1 { get; set; }
public string Property2 { get; set; }
}
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap()
.ForMember(dest => dest.Property1, opt => opt.MapFrom(src => src.Property1))
.ForMember(dest => dest.Property2, opt => opt.MapFrom(src => src.Property2));
}
}
public class Program
{
public static void Main(string[] args)
{
var source = new SourceClass
{
Property1 = 1,
Property2 = "Hello"
};
var configuration = new MapperConfiguration(cfg => cfg.AddProfile());
var mapper = configuration.CreateMapper();
var destination = mapper.Map(source);
Console.WriteLine($"Property1: {destination.Property1}, Property2: {destination.Property2}");
}
}
在上面的代码中,我们创建了一个MappingProfile
类,继承自Automapper的Profile
类,用于定义映射规则。在MappingProfile
类的构造函数中,我们使用CreateMap
方法来创建源类型和目标类型之间的映射关系。然后,使用ForMember
方法来分别指定每个成员的映射规则。
在Main
方法中,我们创建了一个MapperConfiguration
对象,并将MappingProfile
添加到配置中。然后,使用配置创建一个IMapper
对象。最后,使用Map
方法将源对象映射到目标对象,并输出目标对象的属性值。
这样,我们可以避免重复的方法调用,同时实现了不同成员的分别映射。
下一篇:避免重复包含