簡體   English   中英

所有映射的自定義AutoMapper名稱/類型約定?

[英]Custom AutoMapper name/type convention for all mappings?

我在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,這樣就不需要第二行了?

我有數百種模型,所以我不想修改ForMmber(cfg)配置的自定義地圖,而是要修改AutoMapper約定,因此默認情況下,每種地圖的轉換類型都會發生,例如:

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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM