Прочитать на английском

Поделиться через


Ошибка компилятора CS0122

"член" недоступен из-за его уровня защиты

Модификатор доступа для члена класса запрещает доступ к этому члену. Дополнительные сведения см. в статье Модификаторы доступа.

Методы расширения не могут получить доступ к частным членам типа, который они расширяют.

Одна из причин этого (не показана в следующем примере) может быть связана с отсутствием флага компилятора /out для целевого объекта дружественной сборки. Дополнительные сведения см. в статье Дружественные сборки и в разделе OutputAssembly (параметры компилятора C#).

Пример

В следующем примере возникает ошибка 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
    }
}