无法将类型 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.List [重复]

2023-12-15

我需要一个抽象类,其中包含一个方法来返回从基类或接口派生的项目列表。我的代码如下:

public abstract class Template
{
    //this should return the data to be used by the template
    public abstract List<BaseDataClass> GetDataSource(string sectionName);
}

然后,我有一个派生数据类,专门与派生模板类一起使用:

public class DerivedDataClass : BaseDataClass
{
     //some properties specific to the derived class
}

然后我有继承抽象类的主要派生模板类。在这里我想返回 DerivedDataClass 的列表。

public class DerivedTemplate : Template
{
    public override List<BaseDataClass> GetDataSource(string sectionName)
    {
        List<DerivedDataClass> data = new List<DerivedDataClass>();

        //add some stuff to the list

        return data;
    }
 }

当我尝试返回该列表时,我收到“无法将类型 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.List”。

我意识到这些类型之间没有直接转换,但我不确定如何实现这一点。将来会有更多派生模板类和派生数据类,我将需要使用 GetDataSource 函数来获取数据项列表。 我想我想得太多了,但我已经在墙边呆了一段时间了,不确定我应该往哪个方向走。


List<T>不是协变相关的T, so List<Derived>无法投射到List<Base>.

Imagine List<T>将是协变的。你可以写:

List<Base> bases = new List<Derived1>();
bases.Add(new Derived2());

Here Derived2 and Derived1是不同的派生类。这是一个错误,所以List不是协变相关的T.

那么,你能做什么呢?

IEnumerable<T>是协变的

var bases = new List<Base>(deriveds.AsEnumerable());

LINQ's Cast

var bases = deriveds.Cast<Base>()
                    .ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将类型 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.List [重复] 的相关文章

随机推荐

  • 将表单提交到操作 php 文件

    我有一个表单 当用户单击 提交 时 我需要运行一个 php 文件 下面是表单和 php 文件
  • Spirit X3,如何让属性类型匹配规则类型?

    对于 Spirit X3 解析器的开发 我想使用语义操作 脚注 1 对我来说 控制如何将属性存储到 STL 容器中非常重要 这个问题是关于如何控制解析器属性 attr ctx 与规则类型 val ctx 匹配 以便可以正确分配它 也许这个问
  • 如何构建电影数据库和用户选择?

    我想创建电影数据库 用户可以在其中标记他 她观看和喜欢的电影 class Movies ndb Model watched ndb UserProperty liked ndb UserProperty 那行得通吗 我使用谷歌帐户 以后我应
  • PySpark - RDD 中对象的时间重叠

    我的目标是根据时间重叠对对象进行分组 我的每个对象rdd包含一个start time and end time 我可能效率很低 但我计划做的是根据每个对象是否与任何其他对象有任何时间重叠来为每个对象分配一个重叠 id 我有时间重叠的逻辑 然
  • 为什么Spring Boot时找不到bean?

    我以更方便的方式重新配置了 DAO 通过使用 JpaRepository 而不是手动执行所有样板代码 但现在每次我启动 Spring 应用程序时都会出现以下错误 APPLICATION FAILED TO START Description
  • React-Redux 和 Connect - 为什么我的状态在点击时没有更新?

    我是 redux 的新手 正在编写一个简单的投票前端 允许用户对他们最喜欢的框架 Angular React Vue 进行投票 当用户点击他们想要投票的框架时 我打算将商店中的投票增加一票 我在用着combineReducers and c
  • 多个条件Where子句

    我目前有一个查询 它将根据任何内容从我的数据库中提取大量信息where我想使用的条件 declare CaseNum char 7 ImportId char FormatId char SessionId char 5 set CaseN
  • 从文件共享运行 .NET 应用程序,无需代码签名

    每当从文件共享运行 NET exe 时 NET 安全模型都会引发安全错误 从本地驱动器运行时不会出现该错误 有谁知道无需签署代码即可解决此问题的方法吗 使用 CasPol 完全信任共享 更多答案在这里 为什么我的 NET 应用程序在从网络驱
  • Windows Azure 中的持续集成服务器

    我想在我的项目中使用持续集成系统 但是 我不想使用办公室中的服务器 而是希望我的持续集成服务器在 Windows Azure 上运行 有人设置过这个吗 是否有在 Azure 中托管 Hudson 或 CruiseControl Net 或任
  • 传递给函数时指向结构的指针根本不改变

    stack h define MAX STACK 10 typedef int STACK ITEM typedef struct Stack STACK stack c include stack h struct Stack STACK
  • Firebase 根视图控制器未找到警告

    我今天收到来自 Firebase Analytics 的奇怪警告 这是
  • mysql 具有多个变量的表结构

    我正在编写一个脚本 它将根据不同的条件计算票数并将计数存储在汇总表中 我无法理解如何构建我的表 因为会有超过 1 个变量 该脚本将每周运行一次 每次执行都会添加新的一周 一旦新的月份开始并且脚本执行 就会添加新的月份 一旦新年开始 就会添加
  • 将 r 中的列转换为行[重复]

    这个问题在这里已经有答案了 我使用代码形成了以下数据 test lt data frame dis c 10 20 30 40 dur c 30 40 60 90 method c car car Bicycle Bicycle to lo
  • 我可以为多个 mysql 命令行调用输入一次密码,而查询事先并不知道吗?

    您可以通过将查询放入文件来避免重新输入 mysql 命令行密码 就我而言 直到第一个查询完成后才确定后面的查询 这种情况发生在非交互式脚本中 因此运行 mysql 控制台不是一个选项 mysql 命令行交互有会话的概念吗 或者我可以将其设置
  • 如何按月分组并在特定月份没有值时返回零?

    这是我的mysql收入表 id title description date amount 1 Vehicle sales up From new sale up 2016 09 09 9999 99 2 Jem 2 Sales From
  • to_sql pyodbc count 字段不正确或语法错误

    我正在从 api 网站下载 Json 数据 并使用 sqlalchemy pyodbc 和 pandas 的 to sql 函数将该数据插入到 MSSQL 服务器中 我最多可以下载 10000 行 但是我必须将块大小限制为 10 否则会出现
  • Xcode:如何构建仅横向的 iPhone 程序

    在 Xcode 中 我尝试设计一个仅横向的用户界面 我将 UIViewController 和 UIView 控件都设置为横向模型 但是当我将控件 如按钮 图像 放置在 UIView 上时 当程序运行时 只有放置在左上角区域的控件会响应 看
  • Spark / Scala:用最后的良好观察填充 nan

    我正在使用 Spark 2 0 1 并希望用列中最后一个已知的值填充 nan 值 我能找到的唯一关于火花的参考Spark Scala 使用最后一次观察进行前向填充 or 用 pyspark 之前已知的良好值填充 null似乎使用RDD 我宁
  • 使用“command”和“bind”参数调用函数

    我想指出的是 我学习Python的时间很短 这个问题是针对初学者的 我需要在程序顶部的菜单中添加命令 这将调用函数 color picker red kolory add command label Czerwony command col
  • 无法将类型 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.List [重复]

    这个问题在这里已经有答案了 我需要一个抽象类 其中包含一个方法来返回从基类或接口派生的项目列表 我的代码如下 public abstract class Template this should return the data to be