Erreur du compilateur CS0425
Les contraintes pour le paramètre de type 'paramètre de type' de la méthode 'méthode' doivent correspondre aux contraintes pour le paramètre de type 'paramètre de type' de la méthode d’interface 'méthode'. Utilisez plutôt une implémentation d’interface explicite.
Cette erreur se produit quand une méthode générique virtuelle est substituée dans une classe dérivée et que les contraintes de la méthode de la classe dérivée ne correspondent pas aux contraintes de la méthode de la classe de base. Pour éviter cette erreur, assurez-vous que la clause where
est identique dans les deux déclarations, ou implémentez l’interface explicitement.
L’exemple suivant génère l’erreur 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()
{
}
}
La correspondance des contraintes ne doit pas forcément être exacte. Il suffit que l’ensemble de contraintes possède la même signification. Par exemple, le code suivant est acceptable :
// 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()
{
}
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :