简体   繁体   English

AutoMapper 通用映射方法不映射枚举值

[英]AutoMapper generic map method does not map enum values

I have a generic mapper function for mapping between View models and Domain models.我有一个通用的映射器函数,用于在视图模型和域模型之间进行映射。 For some reason, it does not map Enum values.出于某种原因,它不映射 Enum 值。

public TDomainModel MapToDomainModel<TViewModel, TDomainModel>(TViewModel viewModel)
{
    Mapper.CreateMap<TViewModel, TDomainModel>();
    TDomainModel result = Mapper.Map<TViewModel, TDomainModel>(viewModel);
    return result;
}

public TViewModel MapToViewModel<TDomainModel, TViewModel>(TDomainModel domainModel)
{
    Mapper.CreateMap<TDomainModel, TViewModel>();
    TViewModel result = Mapper.Map<TDomainModel, TViewModel>(domainModel);
    return result;
}

I need to map enum values to integers when mapping from view model to domain model.从视图模型映射到域模型时,我需要将枚举值映射到整数。 And map from integers to enum values when mapping from domain models to view models.当从域模型映射到视图模型时,从整数映射到枚举值。

It would be great if the solution is flexible enough to convert from nullable enums to more types (short, byte etc) and vice versa.如果解决方案足够灵活,可以将可以为空的枚举转换为更多类型(短、字节等),反之亦然,那就太好了。

using autofac mapper?使用 autofac 映射器?

var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap<TViewModel, TDomainModel>()
                 .ForMember(dest => dest.enumfield, opt => opt.MapFrom(src => (EnumFieldEnum)src.EnumField))               
                 .ReverseMap();
});


mapper = config.CreateMapper();

...` ...`

var yy= mapper.Map<TDomainModel>(xx);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM