首页 > 解决方案 > 如果对象 O 继承自对象 T,我如何转换 List列出?

问题描述

我有一个 JSON 响应,它依赖于我无法直接修改的 POCO C# 对象。我需要向 POCO 对象添加一些字段,然后将它们从应用程序的任何其他重用同一对象的组件中屏蔽。

由于我控制了网络服务器和客户端(但不是 POCO 对象本身),我的解决方案是从对象 T 派生,创建List<O>,然后将其转换List<T>为任何不想看到我在其中添加的依赖项派生对象O

如果T是 的父级O,并且简单的转换不起作用,我应该如何从一个转换为另一个?

例如

public class Parent
{
  public string ParentString {get;set;}
}

public class Child : Parent
{
   public string ChildTempObject {get;set;}
}


public static DoStuff()
{
   List<Child> childList = new List<Child>
   //... get from webservice...
   return (List<Parent>)childList; // doesn't work
}

标签: c#genericsinheritancepoco

解决方案


使用Enumerable.Cast<T>

List<Parent> parentList = childList.Cast<Parent>().ToList();

推荐阅读