C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
private protected アクセス修飾子
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/private-protected
同アセンブリ内の派生クラスでのみアクセスできる。
次の例では二つの名前空間は別アセンブリにあるとします。
namespace ClassLibrary1 { // private protected メソッドを持つクラス public class Class1 { private protected void MyMethod() {; } } // 同アセンブリ内のクラス public class Class3 : Class1 { void MyMethod2() { base.MyMethod(); } // ← 同アセンブリ内の派生クラスは OK } }
// 別アセンブリ namespace AnotherAssemblyClass { // 別アセンブリのクラス class AnotherAssemblyClass : ClassLibrary1.Class1 { void MyMethod3() { // base.MyMethod(); ← これはエラー } } }