Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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#_.net - Fatal编程技术网

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
,只需像对其他属性那样添加映射即可。