我该怎么做:

public class BaseItem
{
    public string Title { get; set; }
}

public class DerivedItem : BaseItem
{
    public string Description { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        List<BaseItem> baseList = new List<BaseItem>();
        List<DerivedItem> derivedList = new List<DerivedItem>();
        baseList.Add(new BaseItem() { Title = "tester"});
        derivedList.Add(new DerivedItem() { Title = "derivedTester", Description = "The Description" });

        baseList.AddRange(derivedList);
    }
}

谢谢,
亨克

最佳答案

在c 3.0/.net 3.5中,IEnumerable<T>不是协变的。不过,这在C 4.0/.NET4.0中可能可以正常工作。
现在,您可以(在.NET 3.5中)使用:

baseList.AddRange(derivedList.Cast<BaseItem>());

(请注意,您需要在文件顶部加上“using System.Linq;”)
在那之前…可能最简单的循环:
foreach(BaseItem item in derivedList) {baseList.Add(item);}

07-27 19:53