Ошибка компилятора CS0460
Обновлен: Ноябрь 2007
Сообщение об ошибке
Ограничения для переопределения и явной реализации методов интерфейса унаследованы от базового метода, поэтому они не могут быть указаны явно
Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly
Если универсальный метод, который входит в состав производного класса, переопределяет метод в базовом классе, то ограничения переопределенного метода указать невозможно. Переопределяющий метод из производного класса наследует свои ограничения от метода базового класса.
Пример
Следующий пример проводит к созданию ошибки CS0460.
// CS0460.cs
// compile with: /target:library
class BaseClass
{
BaseClass() { }
}
interface I
{
void F1<T>() where T : BaseClass;
void F2<T>() where T : struct;
void F3<T>() where T : BaseClass;
}
class ExpImpl : I
{
void I.F1<T>() where T : BaseClass {} // CS0460
void I.F2<T>() where T : class {} // CS0460
}