В Часто задаваемые вопросы по обобщениям: лучшие практики:
Компилятор позволит вам явно использовать общие параметры типа для любого интерфейса, но не для класса:
interface ISomeInterface
{...}
class SomeClass
{...}
class MyClass<T>
{
void SomeMethod(T t)
{
ISomeInterface obj1 = (ISomeInterface)t;//Compiles
SomeClass obj2 = (SomeClass)t; //Does not compile
}
}
Я вижу ограничение, разумное для обоих классов и интерфейсов, если класс/интерфейс не указан как тип ограничения.
Так почему такое поведение, почему это разрешено для интерфейсов?