如何使用automapper将具有相同属性的两个类映射到第三个而不重复代码?

时间:2017-07-06 12:49:42

标签: c# automapper

我有两个班级:

public class Dog {
     public string Name {get; set;}
}

public class Cat{
     public string Name {get; set;}
}

它们将映射到:

public class Animal {
    public string AnimalName {get;set;}
}

使用Automapper创建这些映射的推荐方法是什么?

CreateMap<Dog, Animal>.ForMember(p => p.AnimalName, o => o.MapFrom(src => src.Name));

CreateMap<Cat, Animal>.ForMember(p => p.AnimalName, o => o.MapFrom(src => src.Name));

是否有更好的配置Automapper的方法,而不是两次列出相同的成员,一次是Dog,另一次是Cat?

注意:我无法更改源映射(Dog,Cat),因此必须使用它们。因此,我试图找到一种方式说“使用相同的映射将猫作为动物进入动物”,因此我不必复制成员两次。

1 个答案:

答案 0 :(得分:1)

不要打扰。由于源类型中没有共同类型,因此这种重用将在未来引起您的兴趣。只需复制并称呼它一天,没关系。而且仅仅因为你在物理上复制文本并不意味着映射在语义上是相同的 - 它不是。