C# 组合列表<;基地>;带列表<;派生>;

C# 组合列表<;基地>;带列表<;派生>;,c#,C#,我怎样才能做到以下几点: 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>

我怎样才能做到以下几点:

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);
    }
}
公共类基项
{
公共字符串标题{get;set;}
}
公共类DerivedItem:BaseItem
{
公共字符串说明{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
List baseList=新列表();
List derivedList=新列表();
添加(新的BaseItem(){Title=“tester”});
添加(新的DerivedItem(){Title=“derivedTester”,Description=“The Description”});
baseList.AddRange(derivedList);
}
}
谢谢, Henk在C#3.0/.NET3.5中,
IEnumerable
不是协变的。但是,这在C#4.0/.NET4.0中可能可以正常工作

目前,您可以(在.NET 3.5中)使用:


假设您使用的是.net 3.5,请尝试添加derivedList中的项,如下所示:

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

我想通过Web服务将组合列表发送到客户端(使用jQuery),现在Web服务方法传回IEnumarable,但我从未获得description属性。有办法解决这个问题吗?
foreach(BaseItem item in derivedList) {baseList.Add(item);}
baseList.AddRange(derivedList.Cast<BaseItem>());