İngilizce dilinde oku

Aracılığıyla paylaş


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ı.

Bu hatayı düzeltmek için

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).

Örnek

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;
    }
}

Ayrıca bkz.