Общие типы C #

Я использую в своей библиотеке три класса:

public abstract class Base<TFirst, TSecond>
{
    public Base()
    {
      // actions with ID and Data of TFirst and TSecond
    }
}

public abstract class First<TFirstID, TFirstData>
{
    public TFirstID ID {get; set;}
    public TFirstData Data {get; set;}
}

public abstract class Second<TSecondID, TSecondData>
{
    public TSecondID ID {get; set;}
    public TSecondData Data {get; set;}
}

Как я могу указать, что TFirst должен наследовать от First, а TSecond должен наследовать от Second, без использования общих типов для ID и данных в базе ?

Как это:

public abstract class Base<TFirst, TSecond>
    where TFirst : First // without generic-types
...

Изменить: В классах First, Second я использую TFirstID и TSecondID для свойств. В классе Base я использую эти свойства.

5
задан Aleksandr Vishnyakov 25 March 2011 в 15:58
поделиться