내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

형식 변환기 또는 태그 확장에서 사용할 수 있는 서비스 컨텍스트

형식 변환기 및 태그 확장 사용을 지원하는 형식의 작성자는 흔히 태그나 주변 개체 그래프 구조에서 사용이 존재하는 위치에 대한 컨텍스트 정보를 갖고 있어야 합니다. 제공된 개체를 올바르게 인스턴스화하거나 개체 그래프의 기존 개체에 대한 개체 참조를 작성하기 위해서는 정보가 필요할 수 있습니다. .NET Framework XAML 서비스를 사용할 때 필요할 수 있는 컨텍스트는 일련의 서비스 인터페이스로 노출됩니다. 형식 변환기 또는 태그 확장 지원 코드는 사용 가능하고 XamlObjectWriter 또는 관련 형식에서 전달된 서비스 공급자 컨텍스트를 사용하여 서비스를 쿼리할 수 있습니다. 이러한 단일 서비스 통해 XAML 스키마 컨텍스트를 직접 사용할 수 있습니다. 이 항목에서는 값 변환기 구현에서 서비스 컨텍스트에 액세스하는 방법을 설명하고 일반적으로 사용 가능한 서비스와 그 역할을 나열합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

값 변환기의 구현자로서 사용자는 흔히 값 변환기가 적용되는 일정한 유형의 컨텍스트에 액세스해야 합니다. 활성 XAML 스키마 컨텍스트와 같은 정보, XAML 스키마 컨텍스트 및 XAML 개체 작성기가 제공하는 형식 매핑 시스템에 대한 액세스 권한 등이 이 컨텍스트에 포함될 수 있습니다. 태그 확장 또는 형식 변환기 구현에 사용할 수 있는 서비스는 각 가상 메서드 시그니처의 일부인 컨텍스트 매개 변수를 통해 전달됩니다. 모든 경우에 컨텍스트에서 구현된 IServiceProvider가 있으며 IServiceProvider.GetService를 호출하여 서비스를 요청할 수 있습니다.

MarkupExtension 에는 하나의 가상 메서드인 ProvideValue만 있습니다. 입력 serviceProvider 매개 변수는 XAML 프로세서가 태그 확장을 호출할 때 서비스가 구현에 전달되는 방법입니다. 다음 의사 코드는 태그 확장 구현이 해당 ProvideValue에서 서비스를 쿼리할 수 있는 방법을 보여 줍니다.

public override object ProvideValue(IServiceProvider serviceProvider)
{
...
    // Get the IXamlTypeResolver from the service provider
    if (serviceProvider == null)
    {
        throw new ArgumentNullException("serviceProvider");
    }
    IXamlTypeResolver xamlTypeResolver = serviceProvider.GetService(typeof(IXamlTypeResolver)) as IXamlTypeResolver;
    if (xamlTypeResolver == null)
   {
        throw new ArgumentException("IXamlTypeResolver"));
    }
...
}

TypeConverter 에는 서비스 컨텍스트를 사용하고 XAML 사용을 지원하는 네 개의 가상 메서드가 있습니다. 이러한 각 메서드는 입력 context 매개 변수를 전달합니다. 이 매개 변수는 ITypeDescriptorContext 형식이지만 해당 인터페이스가 IServiceProvider를 상속하므로 GetService 메서드를 형식 변환기 구현에 사용할 수 있습니다.

다음 의사 코드는 XAML 사용에 대한 형식 변환기 구현이 해당 재정의 중 하나(이 경우에는 ConvertFrom)에서 서비스를 쿼리할 수 있는 방법을 보여 줍니다.

public override object ConvertFrom(ITypeDescriptorContext typeDescriptorContext,
  CultureInfo cultureInfo,
  object source)
{
    IRootObjectProvider rootProvider = typeDescriptorContext.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider;
    if (rootProvider != null && source is String)
    {
        //return something, else ...
    }
    throw GetConvertFromException(source);
}

값 serializer 컨텍스트의 경우 ValueSerializer 클래스와 관련된 서비스 공급자 형식인 IValueSerializerContext를 사용합니다. 해당 컨텍스트는 네 개의 ValueSerializer 가상 메서드에 대한 재정의에 전달됩니다. 서비스를 가져오려면 컨텍스트에서 GetService를 호출합니다.

태그 확장 또는 형식 변환기에 사용할 수 있는 XAML 서비스에 대한 GetService 액세스의 서비스 공급자는 인터페이스를 통해서만 노출되며 관련 컨텍스트에 전달되는 방법을 포함하는 내부 클래스로 구현됩니다. 로드 경로 또는 저장 경로의 기본 .NET Framework XAML 서비스 구현에서 XAML 처리 작업이 서비스 컨텍스트가 필요한 관련 태그 확장 또는 형식 변환기 메서드를 호출할 때마다 이 내부 개체가 전달됩니다. 환경에 따라 시스템 서비스 컨텍스트는 MarkupExtensionContext 또는 TextSyntaxContext를 제공하지만 이러한 두 클래스의 세부 사항은 내부적입니다. 이러한 클래스와의 상호 작용은 GetService를 통해 이러한 클래스에서 서비스를 요청하는 것으로 제한됩니다.

.NET Framework XAML 서비스는 태그 확장, 형식 변환기, 값 serializer 및 가능한 기타 사용에 대한 서비스를 정의합니다. 다음 단원에서는 이러한 각 서비스를 설명하고 구현에서 서비스가 사용될 수 있는 방법에 대한 지침을 제공합니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIServiceProvider

참조 설명서: IServiceProvider

다음과 관련됨: IServiceProvider.GetService 를 호출하기 위한 .NET Framework의 서비스 기반 인프라 기본 작업

Ee621338.collapse_all(ko-kr,VS.110).gifITypeDescriptorContext

참조 설명서: ITypeDescriptorContext

IServiceProvider 에서 파생됩니다. 이 클래스는 표준에서 나타냅니다 TypeConverter 서명. TypeConverter이후 존재 하는 클래스가입니다.NET Framework 1.0입니다. XAML 및 XAML 이전의 TypeConverter 문자열 값 형식 변환에 대 한 시나리오입니다. .NET Framework XAML 서비스 컨텍스트에서 TypeConverter의 메서드는 명시적으로 구현됩니다. 명시적 구현의 동작은 ITypeDescriptorContext API가 XAML 형식 시스템과 관련되거나 XAML에서 개체 읽기 또는 쓰기와 관련되지 않음을 호출자에게 나타냅니다. Container , InstancePropertyDescriptor는 일반적으로 .NET Framework XAML 서비스 컨텍스트에서 null을 반환합니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIValueSerializerContext

참조 설명서: IValueSerializerContext

ITypeDescriptorContext 에서 파생되며, 또한 XAML 형식 시스템에 대한 거짓 의미를 방지하기 위해 명시적 구현에 의존합니다. ValueSerializer 에 대한 정적 조회 도우미 메서드를 지원합니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIXamlTypeResolver

참조 설명서: IXamlTypeResolver

다음에 의해 정의됨: System.Windows.Markup 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 로드 경로 시나리오 및 XAML 스키마 컨텍스트와의 상호 작용

서비스 API: Resolve

XAML 작성기가 개체 그래프에서 CLR 개체를 생성할 때 필요한 XAML-CLR 형식 매핑에 영향을 줄 수 있습니다. Resolve 는 XAML 형식 이름(XamlType.Name)에 해당하는 접두사 한정 문자열을 처리하고 CLR Type을 반환합니다. 일반적으로 형식 확인은 XAML 스키마 컨텍스트에 크게 의존합니다. 로드되는 어셈블리, 형식 확인을 위해 액세스할 수 있거나 액세스해야 하는 어셈블리 등의 고려 사항은 XAML 스키마 컨텍스트에서만 인식합니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIUriContext

참조 설명서: IUriContext

다음에 의해 정의됨: System.Windows.Markup 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: URI 또는 x:Uri 값인 멤버 값의 로드 경로 및 저장 경로 처리

서비스 API: BaseUri

이 서비스는 전역으로 사용할 수 있는 URI 루트(있는 경우)를 보고합니다. URI 루트를 사용하여 상대 URI를 절대 URI로 또는 그 반대로 확인할 수 있습니다. 이 시나리오는 주로 특정 프레임워크 또는 프레임워크의 자주 사용되는 루트 요소의 기능에 의해 노출되는 응용 프로그램 서비스와 관련됩니다. 기본 URI는 XAML 판독기 설정으로 지정될 수 있으며, XAML 개체 작성기로 전달되고 이 서비스에 의해 보고됩니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIAmbientProvider

참조 설명서: IAmbientProvider

다음에 의해 정의됨: System.Xaml 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 로드 경로 처리 및 형식 조회 지연 또는 최적화

서비스 API: GetAllAmbientValues , 기타 3개

XAML의 앰비언트 개념은 형식의 특정 멤버를 앰비언트로 만들기 위한 기술입니다. 또는 형식의 인스턴스를 보유하는 모든 속성 값이 앰비언트 속성으로 간주되도록 형식은 앰비언트가 될 수 있습니다. XAML 노드 스트림을 따라 진행되며 개체 그래프의 하위 항목인 태그 확장 또는 형식 변환기는 로드 시 앰비언트 속성 또는 형식 인스턴스에 액세스하거나 저장 시 앰비언트 구조에 대한 지식을 사용할 수 있습니다. 이는 IXamlTypeResolver 또는 x:Type과 같은 다른 서비스의 형식 확인에 필요한 정규화 정도에 영향을 줄 수 있습니다. AmbientPropertyValue 을 참조하십시오.

Ee621338.collapse_all(ko-kr,VS.110).gifIXamlSchemaContextProvider

참조 설명서: IXamlSchemaContextProvider

다음에 의해 정의됨: System.Xaml 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 로드 경로 및 XAML 형식을 지원 형식으로 확인해야 하는 모든 작업

서비스 API: SchemaContext

지연된 콘텐츠를 통합하기 위해 동일한 스키마 컨텍스트가 지연된 영역에서 작동해야 하므로 모든 지연 로드 작업에 XAML 스키마 컨텍스트가 필요합니다. XAML 스키마 컨텍스트의 역할에 대한 자세한 내용은 XAML 서비스를 참조하십시오.

Ee621338.collapse_all(ko-kr,VS.110).gifIRootObjectProvider

참조 설명서: IRootObjectProvider

다음에 의해 정의됨: System.Xaml 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 로드 경로

서비스 API: RootObject

이 서비스는 특정 프레임워크 또는 프레임워크의 자주 사용되는 루트 요소의 기능에서 노출되는 응용 프로그램 서비스와 관련됩니다. 루트 개체를 가져오기 위한 한 가지 시나리오는 코드 숨김 및 이벤트 연결 작업입니다. 예를 들어 x:Class의 WPF 구현은 XAML 태그의 다른 위치에서 발견된 이벤트 처리기 특성의 태그 컴파일 및 연결에 사용됩니다. 태그 컴파일에 대한 태그 및 코드 숨김 정의 부분 클래스의 연결 지점은 루트 요소에 있습니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIXamlNamespaceResolver

참조 설명서: IXamlNamespaceResolver

다음에 의해 정의됨: System.Xaml 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 로드 경로, 저장 경로

서비스 API: 로드 경로의 경우 GetNamespace, 저장 경로의 경우 GetNamespacePrefixes

IXamlNamespaceResolver 는 원래의 XAML 태그에서 매핑된 접두사에 기초하여 XAML 네임스페이스 식별자/URI를 반환할 수 있는 서비스입니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIProvideValueTarget

참조 설명서: IProvideValueTarget

다음에 의해 정의됨: System.Windows.Markup 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 로드 경로 및 저장 경로

서비스 API: TargetObject , TargetProperty

IProvideValueTarget 은 형식 변환기 또는 태그 확장이 로드 시에 작동하는 위치에 대한 컨텍스트를 가져올 수 있도록 합니다. 구현에서는 이 컨텍스트를 사용하여 사용을 무효화할 수 있습니다. 예를 들어 WPF는 DynamicResourceExtension과 같은 태그 확장 안에 논리를 포함하고 있습니다. 이 논리는 TargetProperty를 확인하여 확장이 종속성 속성(또는 종속성 속성이 아닌 다른 속성의 짧은 목록)을 설정하는 데만 사용되도록 합니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIXamlNameResolver

참조 설명서: IXamlNameResolver

다음에 의해 정의됨: System.Xaml 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: x:Name , x:Reference 또는 프레임워크 관련 기술에 의해 식별된 개체를 확인하는 로드 경로 개체 그래프 정의

서비스 API: Resolve 및 전방 참조 처리와 같은 고급 시나리오를 위한 기타 API

x:Reference 처리의 .NET Framework XAML 서비스 구현은 이 서비스에 의존합니다. 프레임워크를 지원하는 특정 프레임워크 또는 도구가 x:Name을 처리하거나 RuntimeNamePropertyAttribute 특성을 사용하는 이와 동등한 속성을 처리하기 위해 이 서비스를 사용합니다.

Ee621338.collapse_all(ko-kr,VS.110).gifIDestinationTypeProvider

참조 설명서: IDestinationTypeProvider

다음에 의해 정의됨: System.Xaml 네임스페이스, System.Xaml 어셈블리

다음과 관련됨: 간접 CLR 형식 정보의 로드 경로 확인

서비스 API: GetDestinationType

자세한 내용은 IDestinationTypeProvider를 참조하십시오.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft