编译器错误 CS0122

由于“成员变量”的保护级别,无法访问

类成员 的访问修饰符 阻止访问该成员。 有关详细信息,请参阅 访问修饰符

扩展成员 无法访问其扩展类型的私有成员。

原因之一(不在下面的示例中显示)可能是省略了友元程序集目标的 /out 编译器标志。 有关详细信息,请参阅友元程序集OutputAssembly (C# 编译器选项)。

Example

以下示例生成 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
    }
}