문제

이미 알고 있듯이 .NET 프레임 워크의 보호 된 내부 액세스 수정자는 이상한 방식으로 작동합니다. 클래스가 보호 그리고 내부, 그것은 수업이라고 말합니다 보호 또는 내부; 즉, 수정 된 클래스 또는 멤버는 Whitin에서 동일한 어셈블리에서 액세스 할 수 있습니다. 만큼 잘 동일한 계층에서.

그래서, 이것을 아는 것 : 언제 사용 하시겠습니까? 예를 들어 줄 수 있습니까? 좋은가요? 조명 .NET 기본 클래스 라이브러리 내부의 사용 예?

도움이 되었습니까?

해결책

가장 극단적 인 상황을 제외하고는이 액세스 수정 자 조합을 사용해야 할 필요가 거의 없었습니다. 그러나 때로는 유형 변환기 및 편집자와 같은 도우미 클래스가 어셈블리 내부의 메소드에 액세스해야하지만 파생 클래스 만 다른 사용 사례에서만 액세스 할 수 있도록해야합니다.

예는 유형을 유형 변환기의 문자열로 바꾸는 호출이있을 수 있습니다. ToString() 일반적 으로이 목적으로 사용되지 않으므로 ToPersistableString() 유형 변환기를 사용하기를 원한다고 부르면 internal. 그런 다음 수업에서 파생 된 사람들 이이 호출을 파생 수업에 대한 자신의 지속성 체계의 일부로 사용하기를 원할 수도 있다고 결정합니다. protected 또한.

.NET 프레임 워크 사용
AccessibilityNotifyClients ~에 Control ~이다 protected internal. 사용 반사기, 나는 이것이 끝났다는 것을 알 수있다. CheckedItemCollectionCheckListBox 확인 된 상태를 변경할 때 액세스 할 수 있습니다.

다른 팁

단위 테스트를 위해 별도의 이름 공간에서 사용할 수있는 내부 방법에 사용했습니다. 단위 테스트 이름 공간에는 클래스의 서브 클래스가 포함되어 있습니다. 보호 된 방법에 액세스 할 수있었습니다.

그것은 단위 테스트를 위해 모든 것을 공개한다는 주장이 있다고 말했다.

ASP.NET MVC 프레임 워크의 예를 추가하고 싶습니다.

public abstract class Controller : ControllerBase, <Omitted Interfaces>
{
     protected internal ViewResult View() {
            return View(null /* viewName */, null /* masterName */, null /* model */);
        }

     protected internal ContentResult Content(string content) {
            return Content(content, null /* contentType */);
        }

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top