c# - 使用另一个类属性映射类时自动映射器出错
问题描述
我有以下两个类结构,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; }
这两个类,并且没有任何错误。我认为问题在于那条线。我可以知道原因吗?请帮我
解决方案
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 命名空间更改为您拥有的命名空间
推荐阅读
- sql - 在 shell 脚本中传递嵌入式 sql 中的参数
- rust - Rust ndarray 数组的初等函数数学运算
- vuejs3 - 如果不鼓励使用全局事件总线,如何在 Vue3(组合 API)的另一个组件中触发方法?
- reactjs - 单击 RNPickerSelect 时 React Native App 关闭
- powershell - PowerShell | 对象的 TXT 内容
- python - 使用枕头旋转图像而不会出现旋转功能错误的程序
- javascript - 如何保护 Laravel API (sanctum)
- html - 表格行未填满全长
- angular - 未捕获的类型错误:无法访问属性“classList”,e 为空
- ios - 没有这样的模块“颤振”