C# 将多个参数传递给automapper

C# 将多个参数传递给automapper,c#,parameters,automapper,C#,Parameters,Automapper,我的域对象和合同之间有一个映射,如下所示:- public class Car { string name { get; set; } string model{ get; set; } CarProperties properties { get; set; } } public class CarProperties { string color { get; set; } string type { get; set; } } publi

我的域对象和合同之间有一个映射,如下所示:-

public class Car
{
    string name { get; set; }

    string model{ get; set; }

    CarProperties properties { get; set; }
}

public class CarProperties 
{
    string color { get; set; }

    string type { get; set; }
}

public class CarContract
{
    string name { get; set; }

    string model{ get; set; }

    string color { get; set; }

    string type { get; set; }

    string status { get; set; }
}

public static Car GetCreateCarPayloadFromCarContract(CarContract carContract, string name, ModelType modelType)
{
    var car= new Car
    {
        name = name,
        model= modelType.ToString(),
        properties = new CarProperties
        {
            color = carContract.color,
            type = carContract.type
        },
        status = Status.READY.ToString()
    };

    return car;
}
这里ModelType和Status是枚举。我正在尝试将GetCreateCarPayloadFromCarContract方法转换为使用automapper。下面是我到现在为止所做的。但是,我无法映射名称和模型。如何将这些参数传递给自动映射器?我为地位所做的一切也没问题吧

CreateMap<Car,CarContract>()
    .ForMember(dest => dest.color, opt => opt.MapFrom(src => src.properties.color))
    .ForMember(dest => dest.type, opt => opt.MapFrom(src => src.properties.type))
    .ReverseMap()
    .ForMember(dest => dest.properties.color, opt => opt.MapFrom(src => src.color))
    .ForMember(dest => dest.properties.type, opt => opt.MapFrom(src => src.type))
    .ForMember(dest => dest.status, opt => opt.MapFrom(src => Status.READY.ToString()))
CreateMap()
.ForMember(dest=>dest.color,opt=>opt.MapFrom(src=>src.properties.color))
.FormMember(dest=>dest.type,opt=>opt.MapFrom(src=>src.properties.type))
.ReverseMap()
.ForMember(dest=>dest.properties.color,opt=>opt.MapFrom(src=>src.color))
.FormMember(dest=>dest.properties.type,opt=>opt.MapFrom(src=>src.type))
.FormMember(dest=>dest.status,opt=>opt.MapFrom(src=>status.READY.ToString())

有人能帮忙吗?

我相信您的代码有以下观察结果

  • 如果默认情况下,
    属性
    对象未在中初始化
    CarContract
    class
  • 要映射回状态和模型,您应该
    Enum.Parse
    方法
  • 状态始终设置为就绪状态,而不是映射的对象值
  • 使用以下代码:

          CreateMap<Car,CarContract>()
         .ForMember(dest => dest.color, opt => opt.MapFrom(src => 
          src.properties.color))
          .ForMember(dest => dest.type, opt => opt.MapFrom(src => 
          src.properties.type))
         .ForMember(dest => dest.model, opt => opt.MapFrom(src => (<<Your Model 
          Enum Type>>)Enum.Parse(typeof(<<Your Model Enum Type>>), src.model)))
         .ForMember(dest => dest.status, opt => opt.MapFrom(src => (<<Your Status 
          Enum Type>>)Enum.Parse(typeof(<<Your Status Enum Type>>), src.status)))
         .ReverseMap()
         .ForMember(dest => dest.properties, opt => opt.MapFrom(src => new 
         CarProperties() { color = src.color, type = src.type }))
         .ForMember(dest => dest.status, opt => opt.MapFrom(src => src.status.ToString()))
         .ForMember(dest => dest.model, opt => opt.MapFrom(src => src.model.ToString()))
    
    CreateMap()
    .ForMember(dest=>dest.color,opt=>opt.MapFrom(src=>
    src.properties.color)
    .ForMember(dest=>dest.type,opt=>opt.MapFrom(src=>
    src.properties.type)
    .ForMember(dest=>dest.model,opt=>opt.MapFrom(src=>()Enum.Parse(typeof(),src.model)))
    .FormMember(dest=>dest.status,opt=>opt.MapFrom(src=>()Enum.Parse(typeof(),src.status)))
    .ReverseMap()
    .ForMember(dest=>dest.properties,opt=>opt.MapFrom(src=>new
    carproperty(){color=src.color,type=src.type})
    .FormMember(dest=>dest.status,opt=>opt.MapFrom(src=>src.status.ToString())
    .FormMember(dest=>dest.model,opt=>opt.MapFrom(src=>src.model.ToString())
    
    确保将替换为适当的枚举


    您得到的错误是什么?请分享
    Car
    CarContract
    的定义