Erro do Compilador CS0122

'member' está inacessível em razão de seu nível de proteção

O modificador de acesso de um membro de classe impede o acesso ao membro. Para obter mais informações, consulte Modificadores de Acesso.

Os métodos de extensão não podem acessar membros privados do tipo que estão estendendo.

Uma causa disso (não mostrada no exemplo abaixo) pode ser a ausência do sinalizador de compilador /out no destino de um assembly amigável. Para obter mais informações, confira Friend Assemblies e OutputAssembly (opções do compilador C#).

Exemplo

O exemplo a seguir gera o erro 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
    }
}