我如何执行以下操作:
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);
}
}谢谢,亨克
发布于 2009-07-16 09:32:56
在C# 3.0/.NET3.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);}发布于 2009-07-16 09:34:17
假设您使用的是.net 3.5,尝试像这样添加derivedList的项:
baseList.AddRange(derivedList.Cast<BaseItem>());https://stackoverflow.com/questions/1136438
复制相似问题