c# - AutoMapper 不适用于协变接口
问题描述
using AutoMapper;
namespace MapTest
{
class Program
{
static void Main(string[] args)
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<X, Interf<object>>()
.ForMember(dest => dest.B, opt => opt.MapFrom(src => src.K))
.ForMember(dest => dest.A, opt => opt.Ignore());
});
X x = new X { K = 1 };
Interf<object> instance = new Cl<Y> { A = new Y() };
Mapper.Map(x, instance);
}
}
class Cl<T> : Interf<T>
{
public T A { get; set; }
public int B { get; set; }
}
interface Interf<out T>
{
T A { get; }
int B { get; set; }
}
class X
{
public int K { get; set; }
}
class Y
{
}
}
此代码将导致异常Mapper.Map(x, instance)
,因为 AutoMapper 似乎无法找到X -> Interf<object>
映射到Cl<Y>
对象的映射,即使我给它一个instance
确实是 type的提示Interf<object>
。如果我将CreateMap
行更改为:
cfg.CreateMap<X, Interf<Y>>()
它不再崩溃,因为它可以解析Cl<Y>
为Interf<Y>
.
有没有什么办法解决这一问题?
解决方案
推荐阅读
- javascript - 使用 jsPDF 将多个不同的图像添加到 PDF
- javascript - 获取api响应慢且不稳定
- angular - Angular 9 无法在日期管道之后过滤日期
- excel - Power Query 将不同的列表合并到表中
- php - wordpress docker-compose 使用 nginx 设置时出现 502 错误网关错误
- uml - 需要帮助阅读 UML 图
- javascript - 我们如何在 firebase 的用户集合中获取文档
- c++ - 测试测量海平面以上水平的 C++ 程序时出现问题
- vba - MSXML2 在 VBA 中返回文件格式 (XML)
- c# - 如何使用 Protobuf 在我的谷歌操作中将字节数组显示为图像?