MarkupExtension.ProvideValue(IServiceProvider) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta uygulandığında, bu işaretleme uzantısı için hedef özelliğin değeri olarak sağlanan bir nesnesi döndürür.
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
Parametreler
- serviceProvider
- IServiceProvider
Kar payı uzantısı için hizmet sağlayabilen bir hizmet sağlayıcısı yardımcısı.
Döndürülenler
Uzantının uygulandığı özellikte ayarlanacağı nesne değeri.
Açıklamalar
Bir XAML işlemcisi işaretleme uzantısı olan bir tür düğümünü ve üye değerini işlediğinde, bu işaretleme uzantısının yöntemini çağırır ProvideValue ve sonucu nesne grafı veya serileştirme akışına yazar. XAML nesne yazıcısı, hizmet bağlamını bu tür her uygulamaya parametresi aracılığıyla serviceProvider
geçirir.
Özel işaretleme uzantısında uygulama ProvideValue hakkında daha fazla bilgi için "Uygulayıcılara Notlar" bölümüne bakın.
WPF Kullanım Notları
Önemli
İşaretlemeyi ayarlama işlemleriyle belirli etkileşimleri olan WPF sınıfları, .NET Framework 4 uygulaması için bağımlı IReceiveMarkupExtension olmamalıdır. Bunun yerine -attributed callbacks kullanın XamlSetMarkupExtensionAttribute.
Uygulayanlara Notlar
Varsayılan hizmet sağlayıcısı tarafından döndürülen ve genellikle özel veya mevcut MarkupExtension bir uygulama için kullanılabilen yaygın hizmetler aşağıdaki birincil hizmetleri içerir.
IProvideValueTarget , işaretleme uzantısının kullanıldığı bağlamdan nesne başvuru ve özellik tanımlayıcısını bildirir
IXamlTypeResolver , XAML tür adını temel alan bir sağlayabilen genel XAML nesnesi yazma davranışını paralel hale getiren bir hizmeti kullanıma sunar Type . Ad isteğe bağlı olarak eşlenmiş bir XAML ad alanı için bir ön ek içerebilir.
IXamlSchemaContextProvider etkin XAML şema bağlamını doğrudan kullanıma sunar. Bildirilen XamlSchemaContextdosyasından derlemelerin tür desteği için nasıl eşlendiği, derlemelerde tercih edilen ön ek, derlemedeki her XamlType birinin listesi gibi XAML şema bağlam bilgilerini alabilirsiniz.
Daha özel işaretleme uzantısı senaryoları için kullanılabilen diğer hizmetler şunlardır:
Büyük olasılıkla, uygulamaları ProvideValue(IServiceProvider) parametresini serviceProvider
yoksayabilir. Bu, değer döndürmek için bağlam gerektirildiği bazı temel senaryolarda kullanılabilir.
Tipik kullanımda, .NET Framework XAML Hizmetleri ve uygulanan XAML nesne yazıcıları, XAML işleme sırasında çağrılan tüm değer dönüştürücü yöntemlerine bir hizmet sağlayıcısı sağlar. Ancak, sağlamlık için hem hizmet sağlayıcısının kendisi hem de istenen herhangi bir hizmet için null değerler için kod yolları sağlamanız gerekir. İşaretlemeyi uzantınız bir XAML işlemci altyapısı tarafından sağlanan tipik hizmet desteğinin kullanılamadığı bir durumda uygulanırsa null değerler oluşabilir.
XAML hizmet sağlayıcısı bağlamındaki kullanılabilir hizmetler ve bunların nasıl kullanılacağı hakkında daha fazla bilgi için bkz. XAML için Tür Dönüştürücüleri ve biçimlendirme uzantıları.
Yararlı ProvideValue(IServiceProvider) bir sonuç üretmek için belirli bir hizmetin kullanılabilir olmasını gerektiren uygulamaların, bu hizmet kullanılamıyorsa özel durumlar oluşturması beklenir. Oluşturması önerilen özel durum şeklindedir InvalidOperationException.
Özel işaretleme uzantısının değer sağlamak için ihtiyaç duyduğu bağımsız değişkenlerden biri null ise, veri türü için geçersizse veya işaretleme uzantısının işleyebileceği bir değer içermiyorsa, uygulama özel durumlar da verebilir. Oluşturması önerilen özel durum şeklindedir InvalidOperationException.