Automapper - конкретный объект для массива - PullRequest
3 голосов
/ 30 мая 2011

Мне нужно отобразить некоторые значения из класса в массив.Например:

    public class Employee
    {
        public string name;
        public int age;
        public int cars;
    }

должен быть преобразован в

[age, cars]

Я пытался с этим

var employee = new Employee()
        {
            name = "test",
            age = 20,
            cars = 1
        };

        int[] array = new int[] {};

        Mapper.CreateMap<Employee, int[]>()
            .ForMember(x => x,
                options =>
                {
                    options.MapFrom(source => new[] { source.age, source.cars });
                }
            );

        Mapper.Map(employee, array);

, но я получаю эту ошибку:

Использование конфигурации сопоставления для Employee и System.Int32 [] Было сгенерировано исключение типа 'AutoMapper.AutoMapperMappingException'.----> System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

Есть какие-либо подсказки, чтобы решить эту проблему с AutoMapper?

1 Ответ

6 голосов
/ 31 мая 2011

Я нашел хорошее решение. Использование функции ConstructUsing - это путь.

    [Test]
    public void CanConvertEmployeeToArray()
    {

        var employee = new Employee()
        {
            name = "test",
            age = 20,
            cars = 1
        };

        Mapper.CreateMap<Employee, int[]>().ConstructUsing(
                x => new int[] { x.age, x.cars }
            );

        var array = Mapper.Map<Employee, int[]>(employee);

        Assert.That(employee.age, Is.EqualTo(array[0]));
        Assert.That(employee.cars, Is.EqualTo(array[1]));

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...