我有以下类层次结构:
public abstract class BaseData
{
//some properties
}
public class CoData : BaseData
{
//some properties
}
Run Code Online (Sandbox Code Playgroud)
我正在使用一个需要返回类型的方法List<BaseData>.在方法中,我可以访问List<CoData>
public List<BaseData> Save()
{
List<CoData> listCoData = GetData();
return listCoData;
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,我可以从a CoData到a BaseData.但是,当我有一个列表时,即使我明确地试图进行类型转换,它也会出错.
错误:
Error 118 Cannot implicitly convert type 'System.Collections.Generic.List<CoData>' to System.Collections.Generic.List<BaseData>'
Run Code Online (Sandbox Code Playgroud)
编辑:
mquander的转换方法在3.0中似乎对我有用
转发也是以同样的方式完成的吗?从
即,我可以这样做 - List<CoData> listCoData = listBaseData.Cast<BaseData>().ToList();
可能重复:
上传和通用列表
好的,我想发送一个List<CardHolder>作为一个IEnumerable<ICardHolder>地方CardHolder : ICardHolder.但是,编译器错误:
错误4参数'1':无法从'System.Collections.Generic.List'转换为'System.Collections.Generic.IEnumerable'
考虑到这一点,这对我来说似乎很奇怪List<T> : IEnumerable<T>.出了什么问题?
public interface ICardHolder
{
List<Card> Cards { get; set; }
}
public class CardHolder : ICardHolder
{
private List<Card> cards = new List<Card>();
public List<Card> Cards
{
get { return cards; }
set { cards = value; }
}
// ........
}
public class Deck : ICardHolder
{
// .........
public void Deal(IEnumerable<ICardHolder> cardHolders)
{
// ........
}
// .........
}
public class …Run Code Online (Sandbox Code Playgroud)