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/

반응형

+ Recent posts