我怎样才能做到这一点:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,亨克
Mar*_*ell 12
在C#3.0/.NET 3.5中,IEnumerable<T>不是协变的.但是,这可能在C#4.0/.NET 4.0中正常工作.
现在,您可以(在.NET 3.5中)使用:
baseList.AddRange(derivedList.Cast<BaseItem>());
Run Code Online (Sandbox Code Playgroud)
(注意你需要" using System.Linq;"在文件的顶部)
在此之前...可能最容易循环:
foreach(BaseItem item in derivedList) {baseList.Add(item);}
Run Code Online (Sandbox Code Playgroud)