Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射属性保持为空_C#_Automapper - Fatal编程技术网

C# 自动映射属性保持为空

C# 自动映射属性保持为空,c#,automapper,C#,Automapper,似乎我无法使嵌套映射正常工作 读完后:应该很容易 我有以下课程: public class CatalogVehicle : VehicleBase { public string Type { get; set; } public int Year { get; set; } public VehicleSpecification VehicleSpecification { get; set; } = new VehicleSpecification(); } //r

似乎我无法使嵌套映射正常工作

读完后:应该很容易

我有以下课程:

public class CatalogVehicle : VehicleBase
{
    public string Type { get; set; }
    public int Year { get; set; }
    public VehicleSpecification VehicleSpecification { get; set; } = new VehicleSpecification();
} //removed some properties for readability

public class VehicleSpecification
{
    public Engine Engine { get; set; } = new Engine();
    public Transmission Transmission { get; set; } = new Transmission();
    public int Co2 { get; set; }
    public int Weight { get; set; }
} //again removed some more properties (all classes)
对于映射:

CreateMap<VehicleAndQuote, CatalogVehicle>()
    .ForMember(catalogVehicle => catalogVehicle.Id,
        source => source.MapFrom(vehicleAndQuote => vehicleAndQuote.Quote.QuotationIdentifier.Trim()))
    .ForMember(catalogVehicle => catalogVehicle.Make,
        source => source.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.VehicleMakeName))
    .ForMember(catalogVehicle => catalogVehicle.Model,
        source => source.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.VehicleModelTypeName))
    .ForMember(catalogVehicle => catalogVehicle.VehicleSpecification, opt => opt.Ignore()); //removed some lines

CreateMap<VehicleAndQuote, VehicleSpecification>()
    .ForMember(vehicleSpecification => vehicleSpecification.Co2, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.Co2.ToSafeInt()))
    .ForMember(vehicleSpecification => vehicleSpecification.Weight, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.Weight.ToSafeInt()))
    .ForMember(vehicleSpecification => vehicleSpecification.Rating, opt => opt.Ignore())
    .ForMember(vehicleSpecification => vehicleSpecification.Tyres, opt => opt.Ignore()) //removed some lines as well

CreateMap<VehicleAndQuote, Engine>()
    .ForMember(engine => engine.Displacement, opt => opt.Ignore())
    .ForMember(engine => engine.Fuel, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.FuelType))
    .ForMember(engine => engine.Power, src => src.ResolveUsing(GetEnginePower))
    .ForMember(engine => engine.Cylinders, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.Cylinders));

//etc
CreateMap()
.FormMember(catalogVehicle=>catalogVehicle.Id,
source=>source.MapFrom(vehicleAndQuote=>vehicleAndQuote.Quote.QuotationIdentifier.Trim())
.FormMember(catalogVehicle=>catalogVehicle.Make,
source=>source.MapFrom(vehicleAndQuote=>vehicleAndQuote.Vehicle.VehicleMakeName))
.FormMember(catalogVehicle=>catalogVehicle.Model,
source=>source.MapFrom(vehicleAndQuote=>vehicleAndQuote.Vehicle.VehicleModelTypeName))
.FormMember(catalogVehicle=>catalogVehicle.VehicleSpecification,opt=>opt.Ignore())//删除了一些行
CreateMap()
.FormMember(vehicleSpecification=>vehicleSpecification.Co2,src=>src.MapFrom(vehicleAndQuote=>vehicleAndQuote.Vehicle.Co2.ToSafeInt())
.FormMember(vehicleSpecification=>vehicleSpecification.Weight,src=>src.MapFrom(vehicleAndQuote=>vehicleAndQuote.Vehicle.Weight.ToSafeInt())
.FormMember(vehicleSpecification=>vehicleSpecification.Rating,opt=>opt.Ignore())
.FormMember(vehicleSpecification=>vehicleSpecification.Tyres,opt=>opt.Ignore())//还删除了一些行
CreateMap()
.ForMember(engine=>engine.Displacement,opt=>opt.Ignore())
.ForMember(发动机=>发动机.Fuel,src=>src.MapFrom(车辆引用=>vehicleAndQuote.Vehicle.FuelType))
.ForMember(engine=>engine.Power,src=>src.ResolveUsing(GetEnginePower))
.ForMember(engine=>engine.汽缸,src=>src.MapFrom(vehicleAndQuote=>vehicleAndQuote.Vehicle.汽缸));
//等
正如您所看到的,我忽略了一些属性,因为否则我会得到未映射属性错误。在阅读本文之后,只要映射了所有类,它就应该可以工作


我调用的方法如下:
var vehicle=\u mapper.Map(vehicleAndQuote)您需要为嵌套类配置映射,而不是忽略它们:

.ForMember(catalogVehicle => catalogVehicle.VehicleSpecification, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote);
而不是

.ForMember(catalogVehicle => catalogVehicle.VehicleSpecification, opt => opt.Ignore());

其他映射也一样

完美!我知道忽略是错误的,但我不知道应该是什么。Thnx!