#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. но все равно возникает та же ошибка