Иерархии обобщенных классов
56C# --- Руководство по C# --- Иерархии обобщенных классов
Обобщенные классы могут входить в иерархию классов аналогично необобщенным классам. Следовательно, обобщенный класс может действовать как базовый или производный класс. Главное отличие между иерархиями обобщенных и необобщенных классов заключается в том, что в первом случае аргументы типа, необходимые обобщенному базовому классу, должны передаваться всеми производными классами вверх по иерархии аналогично передаче аргументов конструктора.
В производном классе следует непременно указывать параметры типа, требующиеся его обобщенному базовому классу, даже если этот производный класс не обязательно должен быть обобщенным. Разумеется, в производный класс можно свободно добавлять его собственные параметры типа, если в этом есть потребность.
Ниже представлен пример создания сложной иерархии обобщенных классов:
using System;
namespace ConsoleApplication1
{
class Class1<T>
{
}
// Унаследованный обобщенный класс
class Class2_1<T> : Class1
{ }
// Ещё один унаследованный класс с собственными параметрами
class Class2_2<T, V> : Class1
{ }
class Class3<T, V, E, G> : Class2_2
{ }
// Обычный необобщенный класс
class SomeClass
{ }
// Унаследованный от обычного класса обобщенный класс
class ObClass<T> : SomeClass
{ }
class Program
{
static void Main()
{}
}
}
Как видите обобщенный класс можно так же наследовать от необобщенного. Структура наследования обобщенных классов из вышеуказанного примера представлена ниже: