微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Automapper-要数组的具体对象

如何解决Automapper-要数组的具体对象

| 我需要将一些值从类映射到数组。例如:
    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]));

    }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。