Erreur du compilateur CS0473
L’implémentation d’interface explicite 'method name' correspond à plusieurs membres d’interface. Le membre d’interface sélectionné dépend de l’implémentation. Si possible, utilisez plutôt une implémentation non explicite.
Dans certains cas, une méthode générique peut acquérir la même signature qu’une méthode non générique. Le problème est qu’il est impossible dans le système de métadonnées de l’infrastructure du langage commun (CLI) d’établir clairement quelle méthode est reliée à quel emplacement. Il appartient au CLI d’effectuer cette distinction.
Pour corriger l’erreur, éliminez l’implémentation explicite et implémentez les deux méthodes d’interface dans l’implémentation public int TestMethod(int)
implicite.
Le code suivant génère l’erreur CS0473 :
public interface ITest<T>
{
int TestMethod(int i);
int TestMethod(T i);
}
public class ImplementingClass : ITest<int>
{
int ITest<int>.TestMethod(int i) // CS0473
{
return i + 1;
}
public int TestMethod(int i)
{
return i - 1;
}
}
class T
{
static int Main()
{
ImplementingClass a = new ImplementingClass();
if (a.TestMethod(0) != -1)
return -1;
ITest<int> i_a = a;
System.Console.WriteLine(i_a.TestMethod(0).ToString());
if (i_a.TestMethod(0) != 1)
return -1;
return 0;
}
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :