所有映射的自定义自动映射器名称/类型约定



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

目前,我在每次_mapper后调用下面的代码。地图(实体,视图模型(;

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

如何在初始化期间配置自动映射器,以便不需要第二行?

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

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

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

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

根据要求进行编辑:

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

最新更新