KuntalBose Ответов: 1

Отображение поля в поле между списком динамических и списком классов с помощью automapper


У меня есть функция bellow, которая возвращает список динамических объектов

public List<dynamic> getlist()
            {
                List<dynamic> d = new List<dynamic>();
    
                d.Add(new { Name = "A", Age = 12 });
                d.Add(new { Name = "B", Age = 10 });
                d.Add(new { Name = "C", Age = 15 });
                d.Add(new { Name = "D", Age = 18 });
                d.Add(new { Name = "E", Age = 17 });
    
                return d;
    
            }

а также иметь класс
public class testclass
        {
            public string letter { get; set; }
            public Int64 frequency { get; set; }
        }


Я использую AutoMapper.5.2.0 .Я хочу, чтобы отобразить динамический список со списком **testclass** класса .
кто-нибудь может привести пример, как это сделать?

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

..............................................................

1 Ответов

Рейтинг:
1

Richard Deeming

Предполагая, что вы хотите прямое сопоставление от одного типа к другому, что-то вроде этого должно работать:

static void CreateDynamicTestClassMap(IMapperConfigurationExpression configuration)
{
    var dynamicObject = new { Name = default(string), Age = default(int) };
    var map = configuration.CreateMap(dynamicObject.GetType(), typeof(testclass));
    map.ForMember(nameof(testclass.letter), o => o.MapFrom(nameof(dynamicObject.Name)));
    map.ForMember(nameof(testclass.frequency), o => o.MapFrom(nameof(dynamicObject.Age)));
}

...

var config = new MapperConfiguration(CreateDynamicTestClassMap);
config.AssertConfigurationIsValid();

var mapper = config.CreateMapper();
var listOfTestClass = GetList().Select(mapper.Map<testclass>).ToList();

NB: То CreateDynamicTestClassMap метод должен быть в той же сборке, что и ваш GetList метод, в противном случае два динамических типа не будут совпадать.


Karthik_Mahalingam

5

Maciej Los

5ед!