AutoMapper - отображение целых чисел в массив int - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь отобразить целые числа из базы данных в массив int, но получаю ошибку: AutoMapper.AutoMapperConfigurationException: 'Custom configuration for members is only supported for top level individual members on a type.'

Вот что у меня есть:

Модель:

public class Year
{
    public int[] Months { get; set; } = new int[3];
}

Отображение:

CreateMap<DataRow, Year>()
    .ForMember(dest => dest.Months[0], opt => opt.MapFrom(src => src["Jan"]))
    .ForMember(dest => dest.Months[1], opt => opt.MapFrom(src => src["Feb"]))
    .ForMember(dest => dest.Months[2], opt => opt.MapFrom(src => src["Mar"]))

Кто-нибудь знает, как заставить это работать?

1 Ответ

0 голосов
/ 01 января 2019

Вам нужно будет сделать что-то подобное

.ForMember(dest => dest.Months, opt => opt.MapFrom(src => MapFromRow(src)))

, где у вас есть метод

int[] MapFromRow(DataRow src)
{
    int months = new int[12];

    months[0] = src["Jan"];
    ...
    return months;
}

Кажется, что AutoMapper не поддерживает «расставление точек» в свойстве или индексацию вмассив.

Если вы хотите полностью встроить, вы можете сделать

.ForMember(dest => dest.Months, opt => opt.MapFrom(src => new int[]
    {
        (int)src["Jan"], (int)src["Feb"], ...
    }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...