Error del compilador CS0460
Actualización: noviembre 2007
Mensaje de error
Las restricciones para métodos de reemplazo y de implementación de interfaz explícita se heredan del método base; por tanto, no se pueden especificar directamente
Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly
Cuando un método genérico que forma parte de una clase derivada reemplaza un método de la clase base, no se pueden especificar restricciones en el método reemplazado. El método de reemplazo de la clase derivada hereda las restricciones del método de la clase base.
Ejemplo
El código siguiente genera el error 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
}