gpt4 book ai didi

c# - 如何将 List 传递给 T 实现的另一个类型列表

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:00 25 4
gpt4 key购买 nike

所以我有一个继承如下接口(interface)的基本类

public interface IRefDataItem
{
int RefID { get; set; }
string Code { get; set; }
}

public class RACodeItem : IRefDataItem
{
public int RefID { get; set; }
public string Code { get; set; }
}

然后我有一个返回 RACodeItem 列表的方法,我试图将其分配给 IRefDataItem 列表,如下所示

List<IRefDataItem> codes = GetRACodes( ); //GetRACodes returns List of RACodeItem 

我在这里收到一个错误,指出不能将 RACodeItem 的类型列表隐式转换为 IRefDataItem 的列表,尽管 RACodeItem 继承了 IRefDataItem

我是不是漏掉了一些简单的东西?如何将 T 的列表转换为 T 实现的接口(interface)类型的列表?

干杯

斯图尔特

最佳答案

我明白你为什么要这样做,但如果你仔细想想你就会意识到这是行不通的。

例如(这段代码不会编译)

public interface ITest
{
}

public class Test1 : ITest
{
}

public class Test2 : ITest
{ }


static void Main(string[] args)
{
List<ITest> list = new List<Test1>();

list.Add(new Test1());
list.Add(new Test2());

}

问题是您不能将 Test2 添加到 Test1 的列表中。声明您列为 List<ITest> list = new List<ITest>();将编译,您可以添加 Test1 和 Test2。

关于c# - 如何将 List<T> 传递给 T 实现的另一个类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7994476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com