相关疑难解决方法(0)

上传和通用列表

我有以下类层次结构:

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();

.net c#

4
推荐指数
2
解决办法
4425
查看次数

将List <T>作为IEnumerable <T>发送到方法的一些问题

可能重复:
上传和通用列表

好的,我想发送一个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)

.net c# generics ienumerable interface

1
推荐指数
1
解决办法
474
查看次数

标签 统计

.net ×2

c# ×2

generics ×1

ienumerable ×1

interface ×1