Автоматический сопоставитель допускает ошибку при сопоставлении класса со свойствами другого класса

#c# #asp.net-core #automapper

Вопрос:

У меня есть следующие две структуры классов, CASADetialsResponse это выглядит следующим образом,

 public class CASADetialsResponse {  public string status { get; set; }  public string message { get; set; }  public Listlt;objectgt; validation { get; set; }  public Data data { get; set; } }  public class LinkedCard {  public string cardNumber { get; set; } }  public class JointParty {  public string jointName { get; set; } }  public class Account {  public string accountNumber { get; set; }  public string accountNickName { get; set; }  public Listlt;LinkedCardgt; linkedCards { get; set; }  public Listlt;JointPartygt; jointParty { get; set; }  public Listlt;objectgt; productValidation { get; set; } }  public class Transaction {  public string accountNumber { get; set; }  public string valueDate { get; set; }  public string transactionDetails { get; set; }  public string postDate { get; set; }  }  public class Data {  public Account account { get; set; }  public Listlt;Transactiongt; transactions { get; set; } }  

И структура CASADetails классов выглядит следующим образом,

 public class CASADetails {  public string status { get; set; }  public string message { get; set; }  public Listlt;objectgt; validation { get; set; }  public Data data { get; set; } }  public class LinkedCard {  public string cardNumber { get; set; } }  public class JointParty {  public string jointName { get; set; } }  public class Account {  public string accountNumber { get; set; }  public string accountNickName { get; set; }  public Listlt;LinkedCardgt; linkedCards { get; set; }  public Listlt;JointPartygt; jointParty { get; set; }  public Listlt;objectgt; productValidation { get; set; } }  public class Transaction {  public string accountNumber { get; set; }  public string valueDate { get; set; }  public string transactionDetails { get; set; }  public string postDate { get; set; }  }  public class Data {  public Account account { get; set; }  public Listlt;Transactiongt; transactions { get; set; } }  

Когда я использую _mapper.Maplt;CASADetialsResponsegt;(casaResponse); , я получаю эту ошибку:

Типы отображения ошибок:

Типы сопоставления: CASADetails -gt; Управление учетными записями CASADetialsResponse.Домен.CASADetails -gt; Управление учетными записями.Приложение.Dtos.КАСАДетейлы.Конфигурация карты типа CASADetialsResponse: CASADetails -gt; Управление учетными записями CASADetialsResponse.Домен.CASADetails -gt; Управление учетными записями.Приложение.Dtos.КАСАДетейлы.Участник-получатель CASADetialsResponse: данные

Вот как я сопоставляю два класса,

 public class CASADetailsProfile : Profile {  public CASADetailsProfile()  {  // Source -gt; Target  CreateMaplt;CASADetialsRequest, CASADetailsgt;();  CreateMaplt;CASADetails, CASADetialsResponsegt;();  } }  

Я просто прокомментировал public Data data { get; set; } из обоих классов, и без каких-либо ошибок это сработало. Я думаю, что проблема в этой строке. могу я узнать причину? пожалуйста, помогите мне

Комментарии:

1. Вы уверены, что свойства данных объекта Dto и объекта ответа имеют один и тот же тип? Если это не так, вы также должны нанести их на карту.

2. @Эльдар да, оба они одинаковы

Ответ №1:

Пространство имен для класса данных отличается, хотя их содержимое одно и то же.

Удалите эти

введите описание изображения здесь

и обратитесь к пространству имен классов исходных данных или

Если вы не хотите их удалять, добавьте следующую конфигурацию

 public class CASADetailsProfile: Profile {  public CASADetailsProfile()  {  // Source -gt; Target  CreateMaplt;CASADetialsRequest, CASADetailsgt;();  CreateMaplt;CASADetails, CASADetialsResponsegt;();     CreateMaplt;Sources.Data, Destinations.Datagt;();  CreateMaplt;Sources.Account, Destinations.Accountgt;();  CreateMaplt;Sources.Transaction, Destinations.Transactiongt;();   CreateMaplt;Sources.LinkedCard, Destinations.LinkedCardgt;();  CreateMaplt;Sources.JointParty, Destinations.JointPartygt;();  } }  

Измените пространство имен источников и назначения на пространство имен, которое у вас есть

Комментарии:

1. Спасибо, но не ясно, где я должен применять вышеуказанные конфигурации? CreateMaplt;Sources.Data, Destinations.Datagt;();

2. @Gamma проверьте обновленный ответ

3. в этой строке CreateMaplt;Sources.Data, Destinations.Datagt;(); что sources Destinations означает «и»?

4. Они являются заполнителем пространства имен классов.. вы должны изменить его на тот, который у вас есть.

5. но все равно возникает та же ошибка