我需要将一些值从类映射到数组.例如:
public class Employee
{
public string name;
public int age;
public int cars;
}
Run Code Online (Sandbox Code Playgroud)
必须转换为
[age, cars]
Run Code Online (Sandbox Code Playgroud)
我试过这个
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);
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
使用Employee到System.Int32 []的映射配置抛出了类型'AutoMapper.AutoMapperMappingException'的异常.----> System.NullReferenceException:对象引用未设置为对象的实例.
使用AutoMapper解决这个问题的任何线索?
我找到了一个好的解决方案 使用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]));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |