簡體   English   中英

Automapper 映射后不識別繼承子類

[英]Automapper does not recognize inheritence sub classes after mapping

我有:

class Pet { string name {get;set;} }
class Dog : Pet { string dograce {get;set;} }
class Cat : Pet { string catrace {get;set;} }

和我的 DTO:

class PetDTO { string name {get;set;} }
class DogDTO : PetDTO{ string dograce {get;set;} }
class CatDTO : PetDTO { string catrace {get;set;} }

現在我的自動映射器設置對於這些來說非常簡單:

CreateMap<Pet, PetDTO>();
CreateMap<Dog, DogDTO>();
CreateMap<Cat, CatDTO>();

所以現在我將這些寵物添加到我的避難所 class 中:

class Shelter { List<Pet> MyPets {get;set;} }

我的任何 DTO:

class ShelterDTO { List<PetDTO> MyPets {get;set;} }

還有我的自動映射器:

CreateMap<Shelter , ShelterDTO>();

所以我用數據和 map 填充它:

Shelter shel = new Shelter();
shel.MyPets = new List<Pet>();
shel.MyPets.Add(new Dog() { Name = "Fiffy", DogRace = "NiceDog" };

這工作正常,現在我想 map 它:

var data = mapper.map<ShelpterDTO>(shel);

這就是重點。 雖然在我的“shell”中,Pet 是 Dog 並且具有 DogRace 屬性,但映射的實例不是 Dog,它只是具有給定名稱 Fiffy 但沒有 DogRace 的 Pet。

我錯過了什么類型的配置?

您需要在映射中Include參見此處)派生類,例如:

CreateMap<Dog, DogDTO>();
CreateMap<Cat, CatDTO>();

CreateMap<Pet, PetDTO>()
    .Include<Dog, DogDTO>()
    .Include<Cat, CatDTO>();

示例: https://dotnetfiddle.net/8geXDV

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM