Compartir a través de


Error del compilador CS0425

Actualización: noviembre 2007

Mensaje de error

Las restricciones para el parámetro de tipo 'parámetro de tipo' del método 'método' deben coincidir con las restricciones del parámetro de tipo 'parámetro de tipo' del método de interfaz 'método.' Utilice una implementación de interfaz explícita en su lugar.
The constraints for type parameter 'type parameter' of method 'method' must match the constraints for type parameter 'type parameter' of interface method 'method'. Consider using an explicit interface implementation instead.

Este error aparece si se reemplaza un método genérico virtual de una clase derivada y las restricciones del método de la clase derivada no coinciden con las restricciones del método de la clase base. Para evitar este error, asegúrese de que la cláusula where es idéntica en ambas declaraciones, o implemente la interfaz explícitamente.

Ejemplo

En el siguiente ejemplo se genera el error CS0425:

// CS0425.cs

class C1
{
}

class C2
{
}

interface IBase
{
    void F<ItemType>(ItemType item) where ItemType : C1;
}

class Derived : IBase
{
    public void F<ItemType>(ItemType item) where ItemType : C2  // CS0425
    {
    }
}

class CMain
{
    public static void Main()
    {
    }
}

Las restricciones no tienen que ser una coincidencia literal, siempre que el conjunto de restricciones tenga el mismo significado. Por ejemplo, lo siguiente es correcto:

// CS0425b.cs

interface J<Z>
{
}

interface I<S>
{
    void F<T>(S s, T t) where T: J<S>, J<int>;
}

class C : I<int>
{
    public void F<X>(int s, X x) where X : J<int>
    {
    }

    public static void Main()
    {
    }
}