C#에서 public, protected, private, internal등은 클래스 혹은 클래스 멤버에 붙여서 접근 권한을 설정하는 Access Modifier로서, 누구에게 해당 클래스 혹은 클래스 멤버(속성, 메서드, 이벤트 등)를 접근 허용할 지를 지정하게 된다.
네임스페이스안에 직접 생성되는 class는 public 혹은 internal로만 설정할 수 있고, Nested class는 이러한 제한이 없다.
[가산점] 한 어셈블리의 internal class를 다른 어셈블리 DLL에서 호출하여 사용할 수 있는가? 있다면 어떻게 할 수 있는가?
[A] 가능하다. 한 어셈블리에 InternalsVisibleTo 속성(Attribute)를 지정하여 다른 어셈블리의 접근을 허용하면, 지정된 다른 어셈블리에서도 외부의 internal 클래스를 사용할 수 있다. Test Automation 프로그램에서 특히 많이 사용한다.