Я использую в своей библиотеке три класса:
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 я использую эти свойства.