通用类是继承

时间:2014-11-05 09:35:19

标签: c#

我有两个类(classA和classB),它们都继承自同一个类(classC)。现在我需要创建继承A或B列表的新泛型类(classAA)。是否可以在classAA中调用classC的方法。

public class classC
{
    //...
}
public class classA : classC
{
    //...
}
public class classB : classC
{
    //...
}
public class classAA<T> : List<T>
{
    //...
}

2 个答案:

答案 0 :(得分:0)

我相信你想要这样的东西。 Assumming:

class classC
{
    public void DrawObject() { }
}

你可以在T上约束它classC或其衍生物:

class classAA<T> : List<T> where T : classC
{
    public void SomeMethod()
    {
        foreach (var item in this.Cast<classC>())
        {
            // here you can call item.DrawObject()
        }
    }
}

答案 1 :(得分:0)

List<T>继承通常不是一个好主意。 95%的时间你应该更喜欢组合而不是继承。例如,请参阅:Why not inherit from List<T>?

很可能你正在寻找类似的东西:

public class classAA<T> 
    where T : ClassC
{
    public List<T> MyList { get; set; }

    public void Foo()
    {
        foreach (var item in this.MyList)
        {
            item.MethodOfClassC();
        }
    }
}