C# 如何映射对象
以下是我的绑定当前的外观:C# 如何映射对象,c#,.net,C#,.net,以下是我的绑定当前的外观: MerchantAccountRequest request = new MerchantAccountRequest { Individual = new IndividualRequest { FirstName = merchant.MerchantIndividual.FirstName,
MerchantAccountRequest request = new MerchantAccountRequest
{
Individual = new IndividualRequest
{
FirstName = merchant.MerchantIndividual.FirstName,
LastName = merchant.MerchantIndividual.LastName,
Email = merchant.MerchantIndividual.Email,
Phone = merchant.MerchantIndividual.Phone,
DateOfBirth = merchant.MerchantIndividual.DateOfBirth,
Ssn = merchant.MerchantIndividual.Ssn,
Address = new AddressRequest
{
StreetAddress = merchant.MerchantIndividual.StreetAddress,
Locality = merchant.MerchantIndividual.Locality,
Region = merchant.MerchantIndividual.Region,
PostalCode = merchant.MerchantIndividual.PostalCode
}
},
Business = new BusinessRequest
{
LegalName = merchant.MerchantBusiness.LegalName,
DbaName = merchant.MerchantBusiness.DbaName,
TaxId = merchant.MerchantBusiness.TaxId,
Address = new AddressRequest
{
StreetAddress = merchant.MerchantBusiness.StreetAddress,
Locality = merchant.MerchantBusiness.Locality,
Region = merchant.MerchantBusiness.Region,
PostalCode = merchant.MerchantBusiness.PostalCode
}
},
Funding = new FundingRequest
{
Descriptor = merchant.MerchantFunding.Descriptor,
Destination = FundingDestination.BANK,
Email = merchant.MerchantFunding.Email,
MobilePhone = merchant.MerchantFunding.MobilePhone,
AccountNumber = merchant.MerchantFunding.AccountNumber,
RoutingNumber = merchant.MerchantFunding.RoutingNumber
},
TosAccepted = merchant.TosAccepted,
MasterMerchantAccountId = merchant.MasterMerchantAccountId,
Id = merchant.MerchantId
};
我需要使用AutoMapper来实现上述功能
这就是我尝试过的:
CreateMapperProfile
编辑:
CreateMap<Classes.Merchant, MerchantAccountRequest>()
.ForMember(dest => dest.Individual, source => source.MapFrom(s => s.MerchantIndividual))
.ForMember(dest => dest.Business, source => source.MapFrom(s => s.MerchantBusiness))
.ForMember(dest => dest.Funding, source => source.MapFrom(s => s.MerchantFunding))
.ForMember(dest => dest.Id, source => source.MapFrom(s => s.MerchantId));
MerchantAccountRequest request = _mapper.Map<MerchantAccountRequest>(merchant);
request.Individual = _mapper.Map<IndividualRequest>(merchant.MerchantIndividual);
request.Business = _mapper.Map<BusinessRequest>(merchant.MerchantBusiness);
request.Funding = _mapper.Map<FundingRequest>(merchant.MerchantFunding);
以及映射
编辑:
CreateMap<Classes.Merchant, MerchantAccountRequest>()
.ForMember(dest => dest.Individual, source => source.MapFrom(s => s.MerchantIndividual))
.ForMember(dest => dest.Business, source => source.MapFrom(s => s.MerchantBusiness))
.ForMember(dest => dest.Funding, source => source.MapFrom(s => s.MerchantFunding))
.ForMember(dest => dest.Id, source => source.MapFrom(s => s.MerchantId));
MerchantAccountRequest request = _mapper.Map<MerchantAccountRequest>(merchant);
request.Individual = _mapper.Map<IndividualRequest>(merchant.MerchantIndividual);
request.Business = _mapper.Map<BusinessRequest>(merchant.MerchantBusiness);
request.Funding = _mapper.Map<FundingRequest>(merchant.MerchantFunding);
MerchantAccountRequest=\u mapper.Map(商户);
request.Individual=\u mapper.Map(merchant.MerchantIndividual);
request.Business=\u mapper.Map(merchant.merchanttbusiness);
request.Funding=\u mapper.Map(merchant.MerchantFunding);
第一行代码可否MerchantAccountRequest=\u mapper.Map(商户)上面的代码>是否执行所有映射
。。
..
..
如何创建正确的映射?您不需要调用请求的属性上的映射程序.Map
只需调用MerchantAccountRequest=\u mapper.Map(商户)代码>并且假设您有每种类型的映射,您应该可以
我认为以下几点应该会让你走上正确的道路
class Program
{
static void Main(string[] args)
{
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Merchant, MerchantAccountRequest>()
.ForMember(dest => dest.Individual, c => c.MapFrom(source => source.MerchantIndividual));
cfg.CreateMap<MerchantIndividual, IndividualRequest>();
});
config.AssertConfigurationIsValid();
var mapper = config.CreateMapper();
var merchant = new Merchant
{
Id = 1,
MerchantIndividual = new MerchantIndividual { FirstName = "John Doe" }
};
var merchantAccountRequest = mapper.Map<Merchant, MerchantAccountRequest>(merchant);
}
}
public class Merchant
{
public int Id { get; set; }
public MerchantIndividual MerchantIndividual { get; set; }
}
public class MerchantIndividual
{
public string FirstName { get; set; }
}
public class MerchantAccountRequest
{
public int Id { get; set; }
public IndividualRequest Individual { get; set; }
}
public class IndividualRequest
{
public string FirstName { get; set; }
}
类程序
{
静态void Main(字符串[]参数)
{
var config=new-MapperConfiguration(cfg=>{
cfg.CreateMap()
.ForMember(dest=>dest.personal,c=>c.MapFrom(source=>source.MerchantIndividual));
CreateMap();
});
config.assertconfigurationsvalid();
var mapper=config.CreateMapper();
var商户=新商户
{
Id=1,
MerchantIndividual=new MerchantIndividual{FirstName=“John Doe”}
};
var merchantAccountRequest=mapper.Map(商户);
}
}
公营商人
{
公共int Id{get;set;}
公共商品个人商品个人{get;set;}
}
公共类商品个人
{
公共字符串名{get;set;}
}
公共类请求
{
公共int Id{get;set;}
公共个人请求个人{get;set;}
}
公共类个人请求
{
公共字符串名{get;set;}
}
您不需要调用\u mapper.Map
请求的属性
只需调用MerchantAccountRequest=\u mapper.Map(商户)代码>并且假设您有每种类型的映射,您应该可以
我认为以下几点应该会让你走上正确的道路
class Program
{
static void Main(string[] args)
{
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Merchant, MerchantAccountRequest>()
.ForMember(dest => dest.Individual, c => c.MapFrom(source => source.MerchantIndividual));
cfg.CreateMap<MerchantIndividual, IndividualRequest>();
});
config.AssertConfigurationIsValid();
var mapper = config.CreateMapper();
var merchant = new Merchant
{
Id = 1,
MerchantIndividual = new MerchantIndividual { FirstName = "John Doe" }
};
var merchantAccountRequest = mapper.Map<Merchant, MerchantAccountRequest>(merchant);
}
}
public class Merchant
{
public int Id { get; set; }
public MerchantIndividual MerchantIndividual { get; set; }
}
public class MerchantIndividual
{
public string FirstName { get; set; }
}
public class MerchantAccountRequest
{
public int Id { get; set; }
public IndividualRequest Individual { get; set; }
}
public class IndividualRequest
{
public string FirstName { get; set; }
}
类程序
{
静态void Main(字符串[]参数)
{
var config=new-MapperConfiguration(cfg=>{
cfg.CreateMap()
.ForMember(dest=>dest.personal,c=>c.MapFrom(source=>source.MerchantIndividual));
CreateMap();
});
config.assertconfigurationsvalid();
var mapper=config.CreateMapper();
var商户=新商户
{
Id=1,
MerchantIndividual=new MerchantIndividual{FirstName=“John Doe”}
};
var merchantAccountRequest=mapper.Map(商户);
}
}
公营商人
{
公共int Id{get;set;}
公共商品个人商品个人{get;set;}
}
公共类商品个人
{
公共字符串名{get;set;}
}
公共类请求
{
公共int Id{get;set;}
公共个人请求个人{get;set;}
}
公共类个人请求
{
公共字符串名{get;set;}
}
您会遇到什么错误?您会遇到什么错误?我可能会建议您在问题中进行编辑。但是查看编辑中的代码,您已经注释掉了applicationDetails
的映射。看看你得到的错误的最后一部分。如果你真的不想映射它,那么你必须告诉Automapper忽略它.formmember(dest=>dest.applicationDetails,c=>c.Ignore())
如果您确实希望映射applicationDetails
,那么只需像对其他属性那样添加映射即可。我可能建议您在问题中进行编辑。但是查看编辑中的代码,您已经注释掉了applicationDetails
的映射。看看你得到的错误的最后一部分。如果你真的不想映射它,那么你必须告诉Automapper忽略它.formmember(dest=>dest.applicationDetails,c=>c.Ignore())
如果您确实希望映射applicationDetails
,只需像对其他属性那样添加映射即可。