コンパイラ エラー CS0122
'member' はアクセスできない保護レベルになっています
クラス メンバーのアクセス修飾子で、メンバーのアクセスが禁止されています。 詳細については、「アクセス修飾子」を参照してください。
拡張メソッドでは、それが拡張している型のプライベート メンバーにはアクセスできません。
(以下の例では示していませんが) この理由の 1 つは、フレンド アセンブリのターゲットで /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
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示