所有映射的自定义AutoMapper名称/类型约定?

时间:2017-03-17 13:54:33

标签: c# asp.net-mvc automapper

我在ASP.NET MVC应用程序中使用AutoMapper 6.0来实现实体和视图模型之间的映射。实体使用 byte [8] Version 属性,但视图模型使用 ulong Version 属性。由于不同的属性类型,默认映射忽略该字段,我最终得到视图模型的默认值(即0)。

目前我在每个_mapper.Map(entity,viewModel)之后调用下面的代码;

_mapper.Map(entity,viewModel);
viewModel.Version = System.BitConverter.ToUInt64(entity.Version.ToArray(), 0);

如何在初始化期间配置AutoMapper,以便不需要第二行?

我有数百个模型,所以我没有使用ForMember(cfg)配置创建自定义地图,而是想修改AutoMapper约定,因此默认情况下每个地图都会发生上述转换类型,例如:

public class MyCustomProfile : AutoMapper.Profile
{
    public MyCustomProfile()
    {
        CreateMissingTypeMaps = true;
        //use custom converter for this convetion: ulong vVersion = BitConverter.ToUInt64(eVersion.ToArray(), 0);
    }
}

1 个答案:

答案 0 :(得分:2)

您可以尝试使用ConvertUsing进行类型映射:

CreateMap<byte, ulong>().ConvertUsing(System.Convert.ToUInt64);

按要求编辑:

CreateMap<byte[], ulong>().ConvertUsing(x=> BitConverter.ToUInt64(x, 0));