sam_roy Ответов: 2

Automapper для отображения двух классов списков различной структуры, а также явного отображения по членам


I have 4 classes namely ClassA, ClassADto, ClassAA(inner class to ClassA) and the final Result class.


public class InnerA
{
public int HouseNumber{get;set;}
public string StreetName{get;set;}
public string State{get;set;}
}

public class A
{
public int Age{get;set;}
public string Name{get;set;}
public InnerA InnerAObj[get;set;}
}

public class ADto
{

 public int Age{get;set;}
 public string Name{get;set;}

}

class Result
{
public string StreetName{get;set;}
public int TotalCount{get;set;}
public int TodaysDate{get;set;}
public List<ADto> AObjectsList{get;set;}
}



Now my aim is map the 'Result' class with the List of ClassA object to fill it the property 'AObjectsList' as below: Result data= map mapper.map>(obj);

Also at the same time in automapper i want to use custom function either using 'Resolve' or 'AfterMap' to set properties like 'TodaysDate' to current datetime of system and property 'TotalCount' by counting the number of data.

I tried in many ways using 'CreateMap' and also used 'ForMembers' as from 'classAA' we only need the 'StreetName' but it didn't work. Need some help please.


Что я уже пробовал:

1. я попробовал простой CreateMap.
2. я попытался явное отображение с.Формуляры для класса InerA StreetName
3.я пытался .AfterMap для установки systemDatetime и количества записей.

Но я не могу управлять списком продуктов.

2 Ответов

Рейтинг:
1

sam_roy

Картографическое решение сейчас не со мной.


Maciej Los

Это не ответ. Пожалуйста, удалите его, чтобы избежать голосования вниз.
Если вы хотите добавить некоторую информацию к своему вопросу, используйте виджет "улучшить вопрос".

Рейтинг:
1

Maciej Los

Это не ответ, но у меня слишком много сомнений, чтобы опубликовать его в качестве комментария.

1. я не понимаю причины создания двух классов, содержащих почти одни и те же данные, где ADto должен быть базовый класс для A Взгляните на них глубже . :



public class A
{
  public int Age{get;set;} //property exists in A class
  public string Name{get;set;} //property exists in A class
  public InnerA InnerAObj{get;set;} //new property
}
public class ADto
{
 public int Age{get;set;}
 public string Name{get;set;}
}


Например: базовый класс собаки и змеи-животное. У них мало общих свойств, таких как пол, семья, глаза и т. д. Но они также различаются: у собаки есть шерсть, а у змеи нет; собака может ходить, змея - ползать. Понял?

Пожалуйста, прочтите об этом Наследование - Руководство По Программированию На C# | Microsoft Docs[^] и Полиморфизм - Руководство По Программированию На C# | Microsoft Docs[^]

2. Я не вижу прямой связи между Result класс и A или ADto..- Там есть ... StreetName поле, которое принадлежит InnerA Итак, я понятия не имею, как вы хотите "соединить" (сопоставить) их вместе.

3. Кажется, что Result класс должен содержать список A класс. Если это так, то вам никогда не нужно будет создавать TotalCount поле, как и список, уже есть одно.

Когда вы разрешите вышеуказанные проблемы и проясните все сомнения, возможно, вы сможете создать правильные классы и отношения между ними.