다음을 통해 공유


x:ClassModifier 지시문

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

XAML 특성 사용

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

XAML 값

NotPublic

TypeAttributes.Public 또는 TypeAttributes.NotPublic을 지정하기 위해 전달할 정확한 문자열은 사용하는 코드 숨김 프로그래밍 언어에 따라 다릅니다. 설명 부분을 참조하십시오.

종속성

x:Class는 동일한 요소에도 제공해야 하며 이 요소는 페이지의 루트 요소여야 합니다. 자세한 내용은 [MS-XAML] Section 4.3.1.8을 참조하십시오.

설명

.NET Framework 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:ClassModifier가 internal일 때 형식을 로드하고 인스턴스화하는 기능이 포함되어 있습니다. 이 상황 및 다른 프레임워크에 의해 구현된 이와 유사한 기타 상황의 결과로 가능한 모든 인스턴스화 시도를 차단하기 위해 x:ClassModifier에만 의존하지 마십시오.

참고 항목

참조

x:Class 지시문

x:FieldModifier 지시문

개념

WPF의 코드 숨김 및 XAML

보안(WPF)

기타 리소스

WPF에서 System.Xaml로 마이그레이션된 형식