posted by 방랑군 2012. 1. 16. 21:04

출처 :  http://blog.naver.com/khagaa?Redirect=Log&logNo=30096456055 


public, private, protected 이외에 internal이라는 접근 제어자가 있다.

액션스크립트에서도 본적이 있는데 거의 쓸 일이 없어서 써본적이 없는것 같다.


internal은 어셈블리를 기준으로 나뉜다고 한다. 어셈블리라는 것은 한 프로젝트가 뽑아내는 결과물이다.

exe가 됐던 dll 이 됐던 한 프로젝트는 결과물을 뽑아내고 이 결과물 내부에서는 public 처럼 접근이 가능하다고 한다.


접근이 불가능한 경우를 예로 들면 dll 프로젝트에서 internal로 선언된 클래스가 있다고 치면 다른 exe프로젝트에서 dll 을 참조하여

사용한다고 할 때 어셈블리가 다르기 때문에 internal 클래스에 접근 하지 못한다.


여기서 중요한 문제점 하나는 dll 을 참조하여 상속을 받으려 할 때이다.

internal로 선언된 클래스는 외부 프로젝트에서 접근을 할 수 없기 때문에 외부 프로젝트에서 dll 을 참조하여 상속 받는 경우에 대한 대비책이 필요할 수 있다.

그래서 나온것이 protected internal이다.

어셈블리가 다르더라도 상속을 받게 된다면 슈퍼클래스의 protected internal속성을 접근 가능하게 된다.

 

'강좌 > C#' 카테고리의 다른 글

Cross-thread operation not valid  (0) 2012.01.17
Delegate  (0) 2012.01.17
Hashtable, HashSet<T>, Dictionary<TKey, TValue>  (0) 2012.01.16
Generic 컬렉션 - List, Dictionary, Queue, Stack  (0) 2012.01.16
DictionaryEntry 구조체  (0) 2012.01.16