MarkupExtension.ProvideValue(IServiceProvider) Metoda

Definicja

Po zaimplementowaniu w klasie pochodnej zwraca obiekt, który jest udostępniany jako wartość właściwości docelowej dla tego rozszerzenia znaczników.

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

Parametry

serviceProvider
IServiceProvider

Pomocnik dostawcy usług, który może świadczyć usługi dla rozszerzenia znaczników.

Zwraca

Wartość obiektu do ustawienia we właściwości, w której jest stosowane rozszerzenie.

Uwagi

Gdy procesor XAML przetwarza węzeł typu i wartość składową, która jest rozszerzeniem znaczników, wywołuje ProvideValue metodę tego rozszerzenia znaczników i zapisuje wynik na grafie obiektu lub strumieniu serializacji. Składnik zapisywania obiektów XAML przekazuje kontekst usługi do każdej takiej implementacji za pomocą parametru serviceProvider .

Zobacz sekcję "Uwagi do implementatorów", aby uzyskać więcej informacji na temat implementowania ProvideValue w niestandardowym rozszerzeniu znaczników.

Uwagi dotyczące użycia platformy WPF

Ważna

Klasy WPF, które mają określone interakcje z operacjami zestawu znaczników, nie powinny polegać na IReceiveMarkupExtension implementacji programu .NET Framework 4. Zamiast tego użyj XamlSetMarkupExtensionAttributewywołań zwrotnych atrybutów -attributed.

Notatki dotyczące implementowania

Typowe usługi zwracane przez domyślnego dostawcę usług, który jest zazwyczaj dostępny dla niestandardowej lub istniejącej MarkupExtension implementacji, obejmują następujące usługi podstawowe.

Potencjalnie implementacje ProvideValue(IServiceProvider) programu mogą ignorować serviceProvider parametr . Jest to możliwe w przypadku niektórych podstawowych scenariuszy, w których do zwracania wartości nie jest wymagany żaden kontekst.

W typowym użyciu usługi XAML programu .NET Framework i zaimplementowanych składników zapisywania obiektów XAML zapewni dostawcę usług wszystkim metodom konwertera wartości wywoływanym podczas przetwarzania XAML. Jednak w celu zapewnienia niezawodności należy podać ścieżki kodu dla wartości null zarówno dla samego dostawcy usług, jak i dla dowolnej żądanej usługi. Wartości null mogą wystąpić, jeśli rozszerzenie znaczników jest stosowane w sytuacji, gdy typowa obsługa usługi zapewniana przez infrastrukturę procesora XAML jest niedostępna.

Aby uzyskać więcej informacji na temat dostępnych usług w kontekście dostawcy usług XAML i sposobu ich używania, zobacz Konwertery typów i Rozszerzenia znaczników dla języka XAML.

Implementacje, które wymagają udostępnienia określonej usługi w celu wygenerowania przydatnego ProvideValue(IServiceProvider) wyniku, powinny zgłaszać wyjątki, jeśli ta usługa nie jest dostępna. Zalecanym wyjątkiem do zgłoszenia jest InvalidOperationException.

Implementacja może również zgłaszać wyjątki, jeśli jeden z argumentów, których wymaga rozszerzenie niestandardowego znaczników w celu zapewnienia wartości null, jest nieprawidłowe dla jego typu danych lub nie zawiera wartości, którą rozszerzenie znaczników może przetwarzać. Zalecanym wyjątkiem do zgłoszenia jest InvalidOperationException.

Dotyczy

Zobacz też