如果对象 O 继承自对象 T,如何将 List<O> 转换为 List<T>?
If object O inherits from object T, how can I convert List<O> to List<T>?
我有一个 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
}
您可以使用以下方法将数组的内容转换为父级:
List<Parent> parentList = childList.ConvertAll(x => (Parent)x);
使用Enumerable.Cast<T>
:
List<Parent> parentList = childList.Cast<Parent>().ToList();
我有一个 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
}
您可以使用以下方法将数组的内容转换为父级:
List<Parent> parentList = childList.ConvertAll(x => (Parent)x);
使用Enumerable.Cast<T>
:
List<Parent> parentList = childList.Cast<Parent>().ToList();