Udostępnij za pośrednictwem


Błąd kompilatora CS0122

Element członkowski jest niedostępny ze względu na poziom ochrony

Modyfikator dostępu dla składowej klasy uniemożliwia dostęp do składowej. Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu.

Metody rozszerzeń nie mogą uzyskiwać dostępu do prywatnych elementów członkowskich typu, który rozszerzają.

Jedną z przyczyn tego (nie pokazano w poniższym przykładzie) może być pominięcie flagi /out kompilatora w celu zestawu znajomego. Aby uzyskać więcej informacji, zobacz Friend Assemblies and OutputAssembly (Opcje kompilatora języka C#).

Przykład

Poniższy przykład generuje PLIK CS0122:

// CS0122.cs
public class MyClass
{
    private int data;

    void PrivateMethod() {}
    public void PublicMethod() {}
}

public static class MyClassExtensions
{
    public static int GetData(this MyClass myClass)
    {
        return myClass.data;   // CS0122
    }
}

public class Program
{
    public static void Main()
    {
        MyClass a = new MyClass();
        a.PrivateMethod();   // CS0122
        a.PublicMethod();   // OK
    }
}