Bagikan melalui


MarkupExtension.ProvideValue(IServiceProvider) Metode

Definisi

Saat diimplementasikan di kelas turunan, mengembalikan objek yang disediakan sebagai nilai properti target untuk ekstensi markup ini.

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

Pembantu penyedia layanan yang dapat menyediakan layanan untuk ekstensi markup.

Mengembalikan

Nilai objek yang akan diatur pada properti tempat ekstensi diterapkan.

Keterangan

Ketika prosesor XAML memproses node jenis dan nilai anggota yang merupakan ekstensi markup, prosesor ini memanggil ProvideValue metode ekstensi markup tersebut dan menulis hasilnya ke dalam grafik objek atau aliran serialisasi. Penulis objek XAML meneruskan konteks layanan ke setiap implementasi tersebut serviceProvider melalui parameter .

Lihat bagian "Catatan untuk Pelaksana" untuk informasi selengkapnya tentang cara mengimplementasikan ProvideValue dalam ekstensi markup kustom.

Catatan Penggunaan WPF

Penting

Kelas WPF yang memiliki interaksi khusus dengan operasi set markup tidak boleh diandalkan IReceiveMarkupExtension untuk implementasi .NET Framework 4. Gunakan XamlSetMarkupExtensionAttributepanggilan balik -atribut sebagai gantinya.

Catatan Bagi Implementer

Layanan umum yang dikembalikan oleh penyedia layanan default yang biasanya tersedia untuk implementasi kustom atau yang sudah ada MarkupExtension termasuk layanan utama berikut.

Berpotensi, implementasi ProvideValue(IServiceProvider) dapat mengabaikan serviceProvider parameter . Ini layak untuk beberapa skenario dasar, di mana tidak ada konteks yang diperlukan untuk mengembalikan nilai.

Dalam penggunaan umum, .NET Framework Layanan XAML dan penulis objek XAML yang diimplementasikan akan menyediakan penyedia layanan untuk semua metode pengonversi nilai yang dipanggil selama pemrosesan XAML. Namun, untuk ketahanan, Anda harus menyediakan jalur kode untuk nilai null baik untuk penyedia layanan itu sendiri maupun untuk layanan yang diminta. Nilai null mungkin terjadi jika ekstensi markup Anda diterapkan dalam keadaan di mana dukungan layanan umum yang disediakan oleh infrastruktur prosesor XAML tidak tersedia.

Untuk informasi selengkapnya tentang layanan yang tersedia dari konteks penyedia layanan XAML dan cara menggunakannya, lihat Jenis Pengonversi dan Ekstensi Markup untuk XAML.

Implementasi yang mengharuskan layanan tertentu tersedia untuk menghasilkan hasil yang berguna ProvideValue(IServiceProvider) diharapkan untuk melemparkan pengecualian jika layanan tersebut tidak tersedia. Pengecualian yang disarankan untuk dilemparkan adalah InvalidOperationException.

Implementasi juga dapat melemparkan pengecualian jika salah satu argumen yang dibutuhkan ekstensi markup kustom untuk memberikan nilai null, tidak valid untuk jenis datanya, atau tidak berisi nilai yang mampu diproses oleh ekstensi markup. Pengecualian yang disarankan untuk dilemparkan adalah InvalidOperationException.

Berlaku untuk

Lihat juga