使用自动映射器将字节列表转换为对象列表

时间:2019-02-07 15:15:02

标签: c# asp.net

我有一个包含字节列表的源对象('Roles')

源对象:

public class SourceObjectModel
{
    public int Id { get; set; }

    public List<byte> Roles { get; set; }
}

目标对象包含对象属性列表(“角色”)

目标对象:

public class DestinationObjectModel
{
    public int Id { get; set; }

    public List<MyObject> Roles { get; set; }
}

MyObject对象:

public class MyObject
{                
    public byte Id { get; set; }
}

我想将源对象映射到目标对象。

我的自动映射器配置:

o.CreateMap<SourceObjectModel, DestinationObjectModel>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))                                                                                
                .ForMember(dest => dest.Roles, opt => opt.ResolveUsing(src => new MyResolver()))

我创建了一个自定义转换器类,以将字节列表转换为对象列表。

MyResolver类:

public class MyResolver: ITypeConverter<List<byte>, List<MyObject>>
{
    public List<MyObject> Convert(List<byte> source, List<MyObject> destination, ResolutionContext context)
    {
        return new List<MyObject>();
    }
}

运行AssertConfigurationIsValid()后,我的应用程序崩溃了,但是我没有得到特定的详细错误。谁能告诉我我的自定义解析器类有什么问题吗?

1 个答案:

答案 0 :(得分:0)

最后,我设法解决了该错误。在我的映射器配置中添加了一个新的映射器:

o.CreateMap<List<byte>, List<MyObject>>()
                 .ConvertUsing<MyResolver>();

然后我从基本源对象到目标对象映射配置中删除了属性映射:

o.CreateMap<SourceObjectModel, DestinationObjectModel>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id));