C#,迭代通用子类的公共父类

use*_*682 0 c# generics ienumerable foreach class

我如何设置以下类,以便我可以有一个方法,它采用一个公共父类/接口,并允许我迭代任何子进程而不指定泛型类型?

public abstract class BaseClass
{ ??? }

public class ChildClass<T> : BaseClass 
{
    public List<T> SomeList;
            ???
}

ChildClass<int> childA = new ChildClass<int> ();
ChildClass<string> childB = new ChildClass<string> ();

public void IterateOverChild (BaseClass someChildClass)
{
    foreach (var element in someChildClass.SomeList)    
    {
        Console.WriteLine (element);
    }

}
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 6

让抽象类暴露一些访问子类之间通用的数据的方法,在这种情况下,是一个数据序列,其中每个对象可以是任何类型:

public abstract class BaseClass
{
    public abstract IEnumerable Data { get; }
}

public class ChildClass<T> : BaseClass
{
    public List<T> SomeList { get; set; }
    public override IEnumerable Data { get { return SomeList; } }
}
Run Code Online (Sandbox Code Playgroud)