다음을 통해 공유


x:FieldModifier 지시문

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

XAML 특성 사용

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

XAML 값

묘사
공용 TypeAttributes.NotPublic TypeAttributes.Public 지정하기 위해 전달하는 정확한 문자열은 사용되는 코드 숨김 프로그래밍 언어에 따라 달라집니다. 비고를 참조하세요.

종속성

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에서 만든 요소에 액세스해야 하는 경우는 드물기 때문에 기본 동작입니다. WPF 보안 아키텍처와 XAML 컴파일 동작은 공용 액세스를 허용하도록 x:FieldModifier 구체적으로 설정하지 않는 한 요소 인스턴스를 공용으로 저장하는 필드를 선언하지 않습니다.

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

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

참고 항목