Section 48.5: 확장 메소드의 접근 가능 범위: public (혹은 internal) 멤버들
public class SomeClass {
public void DoStuff() {
}
protected void DoMagic() {
}
}
public static class SomeClassExtensions {
public static void DoStuffWrapper(this SomeClass someInstance) {
someInstance.DoStuff(); // 문제 없음
}
public static void DoMagicWrapper(this SomeClass someInstance) {
someInstance.DoMagic(); // 컴파일 에러
}
}
확장 메소드는 단지 문법적 간편화 장치 (syntactic sugar) 일 뿐이며, 확장 대상이 되는 클래스의 실제 멤버로 취급되지는 않는다. 이것이 의미하는 바는, 확장 메소드가 encapsulation 을 무시할 수는 없다는 것이다 — 이들은 단지 public (혹은 동일한 어셈블리에 구현된 경우는 internal 까지 포함) 필드나 속성값, 메소드들에 대해서만 접근 권한을 갖게 된다.
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
48.7: 열거형 (Enumeration) 과 확장 메소드 (0) | 2022.09.22 |
---|---|
48.6: 메소드 chaining 을 위한 확장 메소드 사용 (1) | 2022.09.22 |
48.4: Generic 확장 메소드 (1) | 2022.09.21 |
48.3: 확장 메소드를 명시적으로 (explicitly) 사용하기 (1) | 2022.09.21 |
48.2: Null 인지 확인하기 (0) | 2022.09.21 |