编译器错误 CS0122

“member”不可访问,因为它具有一定的保护级别

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

扩展方法无法访问它们所扩展的类型的专用成员。

导致出现此错误(未在下面的示例中显示)的一个原因是:在友元程序集的目标上省略了 /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
    }
}