问题描述
|
我需要将一些值从类映射到数组。例如:
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);
但我得到这个错误:
使用从雇员到system.int32 []的映射配置
抛出类型为'AutoMapper.AutoMapperMappingException \'的异常。
----> System.NullReferenceException:对象引用未设置为对象的实例。
有什么线索可以解决这个问题吗?
解决方法
我找到了一个很好的解决方案。使用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]));
}