x:FieldModifier 지시문

명명된 개체 참조에 대한 필드가 TypeAttributes.NotPublic 기본 동작 대신 TypeAttributes.Public 액세스로 정의되도록 XAML 컴파일 동작을 수정합니다.

XAML 특성 사용

<object x:FieldModifier="Public".../>

XAML 값

Description
공용 TypeAttributes.PublicTypeAttributes.NotPublic을 지정하기 위해 전달하는 정확한 문자열은 사용되는 코드 숨김 프로그래밍 언어에 따라 다릅니다. 설명 부분을 참조하세요.

종속성

XAML 프로덕션에서 x:FieldModifier를 사용하는 경우 해당 XAML 프로덕션의 루트 요소는 x:Class 지시문을 선언해야 합니다.

설명

x:FieldModifier는 클래스 또는 해당 멤버의 일반 액세스 수준을 선언하는 것과 관련이 없습니다. XAML 프로덕션의 일부인 특정 XAML 개체가 처리되고 애플리케이션의 개체 그래프에서 잠재적으로 액세스할 수 있는 개체가 되는 경우에만 XAML 처리 동작과 관련이 있습니다. 기본적으로 이러한 개체에 대한 필드 참조는 비공개로 유지되므로 컨트롤 소비자가 개체 그래프를 직접 수정할 수 없습니다. 대신 컨트롤 소비자는 레이아웃 루트, 자식 요소 컬렉션, 전용 공용 속성 등을 가져오는 것과 같이 프로그래밍 모델에서 사용하도록 설정된 표준 패턴을 사용하여 개체 그래프를 수정해야 합니다.

x:FieldModifier 특성의 값은 프로그래밍 언어에 따라 다르며 해당 용도는 특정 프레임워크에 따라 달라질 수 있습니다. 사용할 문자열은 각 언어가 CodeDomProvider를 구현하는 방식과 TypeAttributes.PublicTypeAttributes.NotPublic에 대한 의미를 정의하기 위해 반환하는 형식 변환기와 해당 언어가 대소문자를 구분하는지 여부에 따라 다릅니다.

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

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

  • C++/CLI의 경우 현재 XAML에 대한 대상이 없습니다. 따라서 전달할 문자열이 정의되지 않습니다.

TypeAttributes.NotPublic(C#의 internal, Visual Basic의 Friend)을 지정할 수도 있지만 동작으로 NotPublic이 이미 기본값이기 때문에 TypeAttributes.NotPublic을 지정하는 것은 일반적이지 않습니다.

TypeAttributes.NotPublic은 XAML을 컴파일한 어셈블리 외부의 코드가 XAML에서 만든 요소에 액세스해야 하는 경우가 드물기 때문에 기본 동작입니다. XAML 컴파일 동작과 함께 WPF 보안 아키텍처는 공용 액세스를 허용하도록 x:FieldModifier를 구체적으로 설정하지 않는 한 요소 인스턴스를 공개로 저장하는 필드를 선언하지 않습니다.

x:FieldModifier는 해당 이름이 공개된 후 필드를 참조하는 데 사용되기 때문에 x:Name 지시문이 있는 요소에만 관련이 있습니다.

기본적으로 루트 요소의 partial 클래스는 공용입니다. 그러나 x:ClassModifier 지시문을 사용하여 비공개로 만들 수 있습니다. x:ClassModifier 지시문은 루트 요소 클래스 인스턴스의 액세스 수준에도 영향을 줍니다. 루트 요소에 x:Namex:FieldModifier를 둘 다 배치할 수 있지만 이렇게 하면 루트 요소의 공개 필드 복사본만 만들어지고 실제 루트 요소 클래스 액세스 수준은 여전히 x:ClassModifier 지시문에 의해 제어됩니다.

참고 항목