Aracılığıyla paylaş


Açık Arabirim Uygulaması (C# Programlama Kılavuzu)

Varsa bir sınıfı o üyeye sınıf üzerinde uygulanması, üye uygulanışını kullanmak iki arabirim neden olacak sonra aynı imzaya sahip bir üye içeren iki arabirimi uygular.Aşağıdaki örnekte, tüm çağrılar için Paint aynı yöntemi çağırabilir.

class Test 
{
    static void Main()
    {
        SampleClass sc = new SampleClass();
        IControl ctrl = (IControl)sc;
        ISurface srfc = (ISurface)sc;

        // The following lines all call the same method.
        sc.Paint();
        ctrl.Paint();
        srfc.Paint();
    }
}


interface IControl
{
    void Paint();
}
interface ISurface
{
    void Paint();
}
class SampleClass : IControl, ISurface
{
    // Both ISurface.Paint and IControl.Paint call this method.  
    public void Paint()
    {
        Console.WriteLine("Paint method in SampleClass");
    }
}

// Output: 
// Paint method in SampleClass 
// Paint method in SampleClass 
// Paint method in SampleClass

İki arabirim üyeleri aynı işlevi gerçekleştirmek değil, ancak, bu yanlış uyarlaması birini veya her ikisini arabirimler için yol açabilir.Bir arabirim üyesi açıkça uygulamak mümkündür — bir sınıf üyesi oluşturma arabirimi üzerinden yalnızca denir ve bu arabirim için özeldir.Bu arabirim ve bir dönem adı ile sınıf üyesi adlandırma tarafından gerçekleştirilir.Örne?in:

public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint");
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint");
    }
}

Sınıf üyesi IControl.Paint üzerinden yalnızca kullanılabilir IControl arabirimini ve ISurface.Paint üzerinden yalnızca kullanılabilir ISurface.Her iki yöntem uygulamalarını ayrı ve hiçbiri doğrudan sınıf üzerinde kullanılabilir.Örne?in:

// Call the Paint methods from Main.

SampleClass obj = new SampleClass();
//obj.Paint();  // Compiler error.

IControl c = (IControl)obj;
c.Paint();  // Calls IControl.Paint on SampleClass.

ISurface s = (ISurface)obj;
s.Paint(); // Calls ISurface.Paint on SampleClass. 

// Output: 
// IControl.Paint 
// ISurface.Paint

Açık uygulama da aynı adlı bir özellik ve yöntemi gibi farklı üyeler burada iki arabirim bildirmek durumları çözmek için kullanılır:

interface ILeft
{
    int P { get;}
}
interface IRight
{
    int P();
}

İki arabirim uygulamak için bir derleyici hatası önlemek için açık uygulaması için p özellik veya yöntem p veya her ikisini de kullanmak bir sınıf vardır.Örne?in:

class Middle : ILeft, IRight
{
    public int P() { return 0; }
    int ILeft.P { get { return 0; } }
}

Ayrıca bkz.

Başvuru

Sınıflar ve Yapılar (C# Programlama Kılavuzu)

Arabirimler (C# Programlama Kılavuzu)

Devralma (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu