Derleyici Hatası CS0473
Açık arabirim uygulaması 'yöntem adı' birden fazla arabirim üyesiyle eşleşir. Hangi arabirim üyesinin seçildiği uygulamaya bağımlıdır. Bunun yerine açık olmayan bir uygulama kullanmayı göz önünde bulundurun.
Bazı durumlarda genel bir yöntem, genel olmayan bir yöntemle aynı imzayı alabilir. Sorun, ortak dil altyapısı (CLI) meta veri sisteminde hangi yöntemin hangi yuvaya bağlandığını kesin olarak belirtmenin bir yolu olmamasıdır. Bu belirlemeyi yapmak CLI'ya bağlı.
Hatayı düzeltmek için açık uygulamayı ortadan kaldırın ve örtük uygulamadaki arabirim yöntemlerinin ikisini de uygulayın public int TestMethod(int)
.
Aşağıdaki kod CS0473 oluşturur:
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;
}
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: