首页 > 解决方案 > 使用另一个类属性映射类时自动映射器出错

问题描述

我有以下两个类结构,CASADetialsResponse如下所示,

public class CASADetialsResponse
{
    public string status { get; set; }
    public string message { get; set; }
    public List<object> validation { get; set; }
    public Data data { get; set; }
}

public class LinkedCard
{
    public string cardNumber { get; set; }
}

public class JointParty
{
    public string jointName { get; set; }
}

public class Account
{
    public string accountNumber { get; set; }
    public string accountNickName { get; set; }
    public List<LinkedCard> linkedCards { get; set; }
    public List<JointParty> jointParty { get; set; }
    public List<object> productValidation { get; set; }
}

public class Transaction
{
    public string accountNumber { get; set; }
    public string valueDate { get; set; }
    public string transactionDetails { get; set; }
    public string postDate { get; set; }

}

public class Data
{
    public Account account { get; set; }
    public List<Transaction> transactions { get; set; }
}

CASADetails结构如下,

public class CASADetails
{
    public string status { get; set; }
    public string message { get; set; }
    public List<object> validation { get; set; }
    public Data data { get; set; }
}

public class LinkedCard
{
    public string cardNumber { get; set; }
}

public class JointParty
{
    public string jointName { get; set; }
}

public class Account
{
    public string accountNumber { get; set; }
    public string accountNickName { get; set; }
    public List<LinkedCard> linkedCards { get; set; }
    public List<JointParty> jointParty { get; set; }
    public List<object> productValidation { get; set; }
}

public class Transaction
{
    public string accountNumber { get; set; }
    public string valueDate { get; set; }
    public string transactionDetails { get; set; }
    public string postDate { get; set; }

}

public class Data
{
    public Account account { get; set; }
    public List<Transaction> transactions { get; set; }
}

当我使用_mapper.Map<CASADetialsResponse>(casaResponse);我得到这个错误:

错误映射类型:

映射类型: CASADetails -> CASADetialsResponse AccountManagement.Domain.CASADetails -> AccountManagement.Application.Dtos.CASADetails.CASADetialsResponse 类型映射配置: CASADetails -> CASADetialsResponse AccountManagement.Domain.CASADetails -> AccountManagement.Application.Dtos.CASADetails.CASADetialsResponse 目的地成员:数据

这就是我映射这两个类的方式,

public class CASADetailsProfile : Profile
{
    public CASADetailsProfile()
    {
        // Source -> Target
        CreateMap<CASADetialsRequest, CASADetails>();
        CreateMap<CASADetails, CASADetialsResponse>();
    }
}

我只是评论了public Data data { get; set; }这两个类,并且没有任何错误。我认为问题在于那条线。我可以知道原因吗?请帮我

标签: c#asp.net-coreautomapper

解决方案


Data 类的命名空间是不同的,尽管它们的内容是相同的。

删除这些

在此处输入图像描述

并参考源数据类命名空间或

如果不想删除,添加如下配置

public class CASADetailsProfile: Profile
{
    public CASADetailsProfile()
    {
        // Source -> Target
        CreateMap<CASADetialsRequest, CASADetails>();
        CreateMap<CASADetails, CASADetialsResponse>();

        
        CreateMap<Sources.Data, Destinations.Data>();
        CreateMap<Sources.Account, Destinations.Account>();
        CreateMap<Sources.Transaction, Destinations.Transaction>();            
        CreateMap<Sources.LinkedCard, Destinations.LinkedCard>();
        CreateMap<Sources.JointParty, Destinations.JointParty>();
    }
}

将 Sources 命名空间和 Destinations 命名空间更改为您拥有的命名空间


推荐阅读