Section 40.4: protected internal 액세스 한정자

protected internal 키워드는 중첩된 클래스, 속성, 메소드나 필드를 동일 어셈블리 내에서 접근하거나 다른 어셈블리 내의 상속된 클래스 내에서 접근하는 경우에만 접근을 허용한다:

어셈블리 1

public class Foo { public string MyPublicProperty { get; set; } protected internal string MyProtectedInternalProperty { get; set; } protected internal class MyProtectedInternalNestedClass { private string blah; public int N { get; set; } } } public class Bar { void MyMethod1() { Foo foo = new Foo(); var myPublicProperty = foo.MyPublicProperty; var myProtectedInternalProperty = foo.MyProtectedInternalProperty; var myProtectedInternalNestedInstance = new Foo.MyProtectedInternalNestedClass(); } }

어셈블리 2

public class Baz: Foo { void MyMethod1() { var myPublicProperty = MyPublicProperty; var myProtectedInternalProperty = MyProtectedInternalProperty; var thing = new MyProtectedInternalNestedClass(); } void MyMethod2() { Foo foo = new Foo(); var myPublicProperty = foo.MyPublicProperty; // 컴파일 에러 var myProtectedInternalProperty = foo.MyProtectedInternalProperty; // 컴파일 에러 var myProtectedInternalNestedInstance = new Foo.MyProtectedInternalNestedClass(); } } public class Qux { void MyMethod1() { Baz baz = new Baz(); var myPublicProperty = baz.MyPublicProperty; // 컴파일 에러 var myProtectedInternalProperty = baz.MyProtectedInternalProperty; // 컴파일 에러 var myProtectedInternalNestedInstance = new Baz.MyProtectedInternalNestedClass(); } void MyMethod2() { Foo foo = new Foo(); var myPublicProperty = foo.MyPublicProperty; // 컴파일 에러 var myProtectedInternalProperty = foo.MyProtectedInternalProperty; // 컴파일 에러 var myProtectedInternalNestedInstance = new Foo.MyProtectedInternalNestedClass(); } }
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts