简体   繁体   English

Automapper标志枚举

[英]Automapper flag enum

i am writing a mvc website that takes some information by viewmodels. 我正在写一个MVC网站,它通过viewmodels获取一些信息。 this is my db poco 这是我的数据库

public class ServiceTime : BaseEntity
{
    public int IdRestaurant { get; set; }
    public virtual Restaurant Restaurant { get; set; }
    public  Src.OrderStar.Entities.Day Day { get; set; }
    public string StartTime { get; set; }
    public string FinishTime { get; set; }
}

and this is my view model 这是我的视图模型

public class ServiceTimeModel
{
    public int Id { get; set; }
    public int IdRestaurant { get; set; }
    public bool Monday { get; set; }
    public bool Tuesday { get; set; }
    public bool Wednesday { get; set; }
    public bool Thursday { get; set; }
    public bool Friday { get; set; }
    public bool Saturday { get; set; }
    public bool Sunday { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime FinishTime { get; set; }
}

i am converting these class to each other by automapper. 我通过自动映射器将这些类相互转换。 i can easily convert ServiceTime to ServiceTimeModel by this configuration 我可以通过此配置轻松将ServiceTime转换为ServiceTimeModel

cfg.CreateMap<ServiceTime, ServiceTimeModel>()
            .ForMember(dest => dest.Monday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Monday)))
            .ForMember(dest => dest.Tuesday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Tuesday)))
            .ForMember(dest => dest.Wednesday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Wednesday)))
            .ForMember(dest => dest.Thursday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Thursday)))
            .ForMember(dest => dest.Friday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Friday)))
            .ForMember(dest => dest.Saturday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Saturday)))
            .ForMember(dest => dest.Sunday, opt => opt.MapFrom(src => src.Day.HasFlag(Day.Sunday)))
            .IgnoreAllNonExisting();

Bu i couldnt to the opposite of this, i mean couldn't solve how to bind ServiceTimeModel to ServiceTime 我不能相反,我的意思是无法解决如何将ServiceTimeModel绑定到ServiceTime

i want to bind five different days to flag enum 我想绑定五个不同的日子来标记枚举

Any ideas? 有任何想法吗?

Use ResolveUsing method and create your own implementation. 使用ResolveUsing方法并创建自己的实现。 For example: (it's not nice, but works) 例如:(不好,但是可以用)

cfg.CreateMap<ProductServiceTimeModel, ProductServiceTime>()
    .ForMember(dest => dest.Day, opt => opt.ResolveUsing(src => 
    {
       Src.OrderStar.Entities.Day result = (src.Monday ? Day.Monday : 0) | (src.Tuesday ? Day.Tuesday: 0) | (src.Wednesday ? Day.Wednesday : 0) | (src.Thursday ? Day.Thursday: 0) | (src.Friday ? Day.Friday : 0) | (src.Saturday ? Day.Saturday : 0) | (src.Sunday ? Day.Sunday: 0);
       return result;
    }));

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

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