MarkupExtension.ProvideValue(IServiceProvider) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 구현된 경우 이 태그 확장의 대상 개체 속성에 대한 값으로 제공된 개체를 반환합니다.
public:
abstract System::Object ^ ProvideValue(IServiceProvider ^ serviceProvider);
public abstract object ProvideValue (IServiceProvider serviceProvider);
abstract member ProvideValue : IServiceProvider -> obj
Public MustOverride Function ProvideValue (serviceProvider As IServiceProvider) As Object
매개 변수
- serviceProvider
- IServiceProvider
태그 확장에 대한 서비스를 제공할 수 있는 서비스 공급자 도우미입니다.
반환
확장이 적용되는 속성에 설정할 개체 값입니다.
설명
XAML 프로세서는 태그 확장인 형식 노드 및 멤버 값을 처리할 때 해당 태그 확장의 메서드를 호출 ProvideValue 하고 결과를 개체 그래프 또는 serialization 스트림에 씁니다. XAML 개체 작성기는 매개 변수를 통해 이러한 각 구현에 서비스 컨텍스트를 serviceProvider
전달합니다.
사용자 지정 태그 확장에서 구현 ProvideValue 하는 방법에 대한 자세한 내용은 "구현자에 대한 참고 사항" 섹션을 참조하세요.
WPF 사용 정보
중요
태그 집합 작업과 특정 상호 작용이 있는 WPF 클래스는 .NET Framework 4 구현에 IReceiveMarkupExtension 의존해서는 안 됩니다. 대신 -attributed 콜백을 사용합니다 XamlSetMarkupExtensionAttribute.
구현자 참고
일반적으로 사용자 지정 또는 기존 구현에서 사용할 수 있는 기본 서비스 공급자가 반환하는 MarkupExtension 일반적인 서비스에는 다음과 같은 기본 서비스가 포함됩니다.
IProvideValueTarget 태그 확장이 사용되는 컨텍스트에서 개체 참조 및 속성 식별자를 보고합니다.
IXamlTypeResolver 는 XAML 형식 이름을 기반으로 를 제공할 수 있는 일반 XAML 개체 쓰기 동작과 평행한 Type 서비스를 노출합니다. 필요에 따라 이름에 매핑된 XAML 네임스페이스에 대한 접두사를 포함할 수 있습니다.
IXamlSchemaContextProvider 는 활성 XAML 스키마 컨텍스트를 직접 노출합니다. 보고된 XamlSchemaContext에서 형식 지원을 위해 어셈블리를 매핑하는 방법, 어셈블리의 기본 접두사, 어셈블리의 각 XamlType 목록 등과 같은 XAML 스키마 컨텍스트 정보를 가져올 수 있습니다.
보다 특수화된 태그 확장 시나리오에 사용할 수 있는 다른 서비스는 다음과 같습니다.
잠재적으로 의 ProvideValue(IServiceProvider) 구현은 매개 변수를 serviceProvider
무시할 수 있습니다. 이는 값을 반환하는 데 컨텍스트가 전혀 필요하지 않은 일부 기본 시나리오에서 사용할 수 있습니다.
일반적인 사용에서 .NET Framework XAML 서비스 및 구현된 XAML 개체 작성기는 XAML 처리 중에 호출되는 모든 값 변환기 메서드에 서비스 공급자를 제공합니다. 그러나 견고성을 위해 서비스 공급자 자체와 요청된 서비스에 대해 모두 null 값에 대한 코드 경로를 제공해야 합니다. XAML 프로세서 인프라에서 제공하는 일반적인 서비스 지원을 사용할 수 없는 상황에서 태그 확장이 적용되는 경우 Null 값이 발생할 수 있습니다.
XAML 서비스 공급자 컨텍스트에서 사용 가능한 서비스 및 사용 방법에 대한 자세한 내용은 XAML에 대한 형식 변환기 및 태그 확장을 참조하세요.
유용한 ProvideValue(IServiceProvider) 결과를 생성하기 위해 특정 서비스를 사용할 수 있어야 하는 구현은 해당 서비스를 사용할 수 없는 경우 예외를 throw해야 합니다. throw할 권장 예외는 입니다 InvalidOperationException.
값을 제공하기 위해 사용자 지정 태그 확장에 필요한 인수 중 하나가 null이거나, 데이터 형식에 유효하지 않거나, 태그 확장에서 처리할 수 있는 값을 포함하지 않는 경우에도 구현에서 예외를 throw할 수 있습니다. throw할 권장 예외는 입니다 InvalidOperationException.
적용 대상
추가 정보
.NET