다음을 통해 공유


x:ClassModifier 지시문

x:Class도 제공되면 XAML 컴파일 동작을 수정합니다. 특히 액세스 수준이 Public인 부분 class를 만드는 대신(기본값) 제공된 x:ClassNotPublic 액세스 수준으로 만들어집니다. 이 동작은 생성된 어셈블리의 클래스에 대한 액세스 수준에 영향을 줍니다.

XAML 특성 사용

<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
   ...
</object>

XAML 값

설명
NotPublic TypeAttributes.NotPublic이 아닌 TypeAttributes.Public을 지정하기 위해 통과할 정확한 문자열은 사용하는 코드 숨김 프로그래밍 언어에 따라 다릅니다. 설명 부분을 참조하세요.

종속성

x:Class도 동일한 요소에서 제공되어야 하며, 해당 요소는 페이지의 루트 요소여야 합니다. 자세한 내용은 [MS-XAML] 섹션 6.3.1.8을 참조하세요.

설명

.NET XAML 서비스 사용량의 x:ClassModifier 값은 프로그래밍 언어에 따라 다릅니다. 사용할 문자열은 각 언어가 CodeDomProvider를 구현하는 방식과 TypeAttributes.PublicTypeAttributes.NotPublic에 대한 의미를 정의하기 위해 반환하는 형식 변환기, 언어가 대소문자를 구분하는지 여부에 따라 다릅니다.

  • C#의 경우 TypeAttributes.NotPublic을 지정하기 위해 전달할 문자열은 internal입니다.

  • Microsoft Visual Basic .NET의 경우 TypeAttributes.NotPublic을 지정하기 위해 전달할 문자열은 Friend입니다.

  • C++/CLI의 경우 XAML 컴파일을 지원하는 대상이 없습니다. 따라서 전달할 값은 지정되지 않습니다.

또한 TypeAttributes.Public(C#에서는 public, Visual Basic에서는 Public)을 지정할 수도 있지만 TypeAttributes.Public이 이미 기본 동작이므로 TypeAttributes.Public을 지정하는 일은 잘 없습니다.

중첩된 클래스 참조가 XAML에서 지원되지 않으므로 C#의 private과 같이 코드 액세스 수준 제한이 동일한 다른 값은 x:ClassModifier와 관련이 없으며, 따라서 TypeAttributes.NotPublic 한정자에도 동일한 효과가 있습니다.

보안 정보

x:ClassModifier에서 선언된 액세스 수준은 여전히 특정 프레임워크 및 해당 기능에 의해 해석될 수 있습니다. WPF에는 해당 클래스가 팩 URI 참조를 통해 WPF 리소스에서 참조되는 경우 x:ClassModifierinternal인 형식을 로드하고 인스턴스화하는 기능이 포함되어 있습니다. 이 경우와 다른 프레임워크에서 구현하는 것과 같은 다른 사례의 결과로 가능한 모든 인스턴스화 시도를 차단하는 데 x:ClassModifier만 사용하지 마세요.

참고 항목