MarkupExtension.ProvideValue(IServiceProvider) Methode

Definition

Gibt bei Implementierung in einer abgeleiteten Klasse ein Objekt zurück, das als Wert der Zieleigenschaft für diese Markuperweiterung bereitgestellt wird.

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

Parameter

serviceProvider
IServiceProvider

Ein Dienstanbieter-Hilfsprogramm, das Dienste für die Markuperweiterung bereitstellen kann.

Gibt zurück

Der Objektwert, der für die Eigenschaft festgelegt werden soll, auf die die Erweiterung angewendet wird.

Hinweise

Wenn ein XAML-Prozessor einen Typknoten und einen Memberwert verarbeitet, bei dem es sich um eine Markuperweiterung handelt, ruft er die ProvideValue Methode dieser Markuperweiterung auf und schreibt das Ergebnis in den Objektgraphen oder Serialisierungsdatenstrom. Der XAML-Objektwriter übergibt den Dienstkontext über den serviceProvider -Parameter an jede solche Implementierung.

Weitere Informationen zum Implementieren ProvideValue in einer benutzerdefinierten Markuperweiterung finden Sie im Abschnitt "Notes to Implementers".

Hinweise zur WPF-Verwendung

Wichtig

WPF-Klassen, die bestimmte Interaktionen mit Markupsatzvorgängen aufweisen, sollten für eine .NET Framework 4-Implementierung nicht verwendet IReceiveMarkupExtension werden. Verwenden Sie XamlSetMarkupExtensionAttributestattdessen -attributierte Rückrufe.

Hinweise für Ausführende

Zu den allgemeinen Diensten, die vom Standarddienstanbieter zurückgegeben werden, der in der Regel für eine benutzerdefinierte oder vorhandene MarkupExtension Implementierung verfügbar ist, gehören die folgenden primären Dienste.

Möglicherweise können Implementierungen von ProvideValue(IServiceProvider) den serviceProvider Parameter ignorieren. Dies ist für einige grundlegende Szenarien praktikabel, in denen für die Rückgabe eines Werts überhaupt kein Kontext erforderlich ist.

In der typischen Verwendung stellen die .NET Framework XAML-Dienste und die implementierten XAML-Objektautoren einen Dienstanbieter für alle Wertkonvertermethoden bereit, die während der XAML-Verarbeitung aufgerufen werden. Aus Gründen der Stabilität sollten Sie jedoch Codepfade für NULL-Werte sowohl für den Dienstanbieter selbst als auch für jeden angeforderten Dienst angeben. NULL-Werte können auftreten, wenn Ihre Markuperweiterung in einem Fall angewendet wird, in dem die typische Dienstunterstützung einer XAML-Prozessorinfrastruktur nicht verfügbar ist.

Weitere Informationen zu verfügbaren Diensten aus dem XAML-Dienstanbieterkontext und deren Verwendung finden Sie unter Typkonverter und Markuperweiterungen für XAML.

Bei Implementierungen, bei denen ein bestimmter Dienst verfügbar sein muss, um ein nützliches ProvideValue(IServiceProvider) Ergebnis zu erzielen, wird erwartet, dass sie Ausnahmen auslösen, wenn dieser Dienst nicht verfügbar ist. Die empfohlene Ausnahme, die ausgelöst werden soll, ist InvalidOperationException.

Die Implementierung kann auch Ausnahmen auslösen, wenn eines der Argumente, die die benutzerdefinierte Markuperweiterung benötigt, um einen Wert bereitzustellen, NULL ist, für ihren Datentyp ungültig ist oder keinen Wert enthält, den die Markuperweiterung verarbeiten kann. Die empfohlene Ausnahme, die ausgelöst werden soll, ist InvalidOperationException.

Gilt für:

Weitere Informationen