C# 使用泛型协变将派生类类型替换为基类类型

原代码:

cs 复制代码
 var result = queryAllMethod.Invoke(service, null); 

var list = (List<DefineBase>)result; 

DefineInfoList.AddRange(list); 

第二行代码报错,

System.InvalidCastException:"无法将类型为"System.Collections.Generic.List`1FluentVision.Core.AnalogIoDefine"的对象强制转换为类型"System.Collections.Generic.List`1FluentVision.Core.DefineBase"。

但是DefineBase是AnalogIoDefine的基类。

问了一下AI,发现可以用IEnumerable替代List:

cs 复制代码
 var result = queryAllMethod.Invoke(service, null);

 var list = (IEnumerable<DefineBase>)result;
 DefineInfoList.AddRange(list);

因为IEnumerable<T>支持协变:

相关推荐
weixin_307779137 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949657 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
边境悍匪9 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
我的xiaodoujiao9 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django
菜鸟~noob2339 小时前
【太空电子战】从CCS到Meadowlands:反通信系统的二十年演进史【含matlab代码】
开发语言·matlab
2501_930707789 小时前
使用C#代码使用条件格式为 Excel 隔行设置颜色
c#·excel
quantdash_cc9 小时前
量化策略为什么需要实时行情数据?从信号产生到交易决策的时间差说起
开发语言·python·数据分析·量化交易·股票数据·quantdash
逆向编程11 小时前
QGIS地图投影(CRS坐标参照系)设置
开发语言
free-elcmacom11 小时前
发际线警告!手撕《C陷阱与缺陷》终极 BOSS:signal 函数与 typedef 魔法
c语言·开发语言·visual studio code·visual studio
程序员阿鹏11 小时前
简单介绍一下软引用
java·开发语言·jvm·数据结构·后端