c# - 有没有办法编写一个通用方法,无论嵌套级别如何,都将从另一个对象返回类型为 T 的所有对象?

标签 c# generics

假设我有一个如下所示的对象:

MainObject
    List<NestedObject>
       NestedObject  
           List<ChildObject>
               ChildObject
               ChildObject
               ChildObject
           List<ChildObject>
               ChildObject
               ChildObject
    List<NestedObject>
       NestedObject
           List<ChildObject>
               ChildObject
           List<ChildObject>
               ChildObject
               ChildObject
       NestedObject  
           List<ChildObject>
               ChildObject
               ChildObject

我想要一个通用方法,允许我将 ChildObject 指定为对象列表,以列表形式返回。同样的方法允许我将 NestedObject 指定为具有列表的对象。

有没有办法用泛型做到这一点?

谢谢。

最佳答案

对于 Linq,它将是这样的:

private IEnumerable<T> Iterate<T>(Type type)
{
    foreach(var p in typeof(type).GetProperties()) {        
        IEnumerable<T> collection = p as IEnumerable<T>;
        if (collection != null){
            return collection 
                .OfType<T>()
                .Concat<T>(property.SelectMany(p => Iterate<T>(p)));
        }
    }
}

关于c# - 有没有办法编写一个通用方法,无论嵌套级别如何,都将从另一个对象返回类型为 T 的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920502/

相关文章:

Java 泛型 : bound class extend class OR 2 interfaces

c# - 从 IP 地址开始和 IP 地址计数生成 IP 范围

c# - 如何将数据选择到 List<T> 而不是 DataTable?

c# - 透视表头样式

c# - 具有可用计数的通用类型

c# - 从 List<T> 继承的类型不能分配给 List<T>

c# - 泛型类型参数和类型

c# - 从 MethodInfo 打印方法的完整签名

c# - 命名空间 "XYZ"中不存在名称 "clr-namespace:ABC"

java - 如何组织具有多个屏幕/面板的基于 MVC 的程序的 Controller ?