MarkupExtension.ProvideValue(IServiceProvider) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer dit wordt geïmplementeerd in een afgeleide klasse, wordt een object geretourneerd dat is opgegeven als de waarde van de doeleigenschap voor deze markeringsextensie.
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
Parameters
- serviceProvider
- IServiceProvider
Een serviceprovider-helper die services kan leveren voor de markeringsextensie.
Retouren
De objectwaarde die moet worden ingesteld op de eigenschap waarop de extensie wordt toegepast.
Opmerkingen
Wanneer een XAML-processor een typeknooppunt en lidwaarde verwerkt die een markeringsextensie is, wordt de ProvideValue methode van die markeringsextensie aangeroepen en wordt het resultaat naar de objectgrafiek of serialisatiestroom geschreven. De XAML-objectschrijver geeft servicecontext door aan elke dergelijke implementatie via de serviceProvider parameter.
Zie de sectie Notities voor implementeerfuncties voor meer informatie over het implementeren ProvideValue in een aangepaste markeringsextensie.
Opmerkingen bij WPF-gebruik
Important
WPF klassen met specifieke interacties met opmaaksetbewerkingen mogen niet afhankelijk zijn van IReceiveMarkupExtension voor een .NET Framework 4-implementatie. Gebruik XamlSetMarkupExtensionAttributein plaats daarvan -toegewezen callbacks.
Notities voor uitvoerders
Algemene services die worden geretourneerd door de standaardserviceprovider die doorgaans beschikbaar is voor een aangepaste of bestaande MarkupExtension implementatie, omvatten de volgende primaire services.
IProvideValueTarget rapporteert de objectverwijzing en een eigenschaps-id uit de context waarin de markeringsextensie wordt gebruikt
IXamlTypeResolver maakt een service beschikbaar die het algemene schrijfgedrag van XAML-objecten parallelleert die een Type op basis van een XAML-typenaam kan bieden. De naam kan eventueel een voorvoegsel voor een toegewezen XAML-naamruimte bevatten.
IXamlSchemaContextProvider maakt de actieve XAML-schemacontext rechtstreeks beschikbaar. Vanuit de gerapporteerde XamlSchemaContext, kunt u XAML-schemacontextinformatie verkrijgen, zoals hoe assembly's worden toegewezen voor typeondersteuning, voorkeursvoorvoegsel in assembly's, lijsten van elk XamlType in een assembly, enzovoort.
Andere services die beschikbaar zijn voor meer gespecialiseerde uitbreidingsscenario's voor markeringen zijn onder andere:
Mogelijk kunnen implementaties van ProvideValue(IServiceProvider) de serviceProvider parameter worden genegeerd. Dit is haalbaar voor sommige basisscenario's, waarbij helemaal geen context is vereist voor het retourneren van een waarde.
Bij normaal gebruik bieden de .NET Framework XAML-services en de geïmplementeerde XAML-objectschrijvers een serviceprovider aan alle methoden voor waardeconversieprogramma's die worden aangeroepen tijdens het verwerken van XAML. Voor robuustheid moet u echter codepaden opgeven voor null-waarden, zowel voor de serviceprovider zelf als voor elke aangevraagde service. Null-waarden kunnen optreden als uw markeringsextensie wordt toegepast in een situatie waarin de typische serviceondersteuning van een XAML-processorinfrastructuur niet beschikbaar is.
Zie Type conversieprogramma's en markeringsextensies voor XAML voor XAML voor meer informatie over beschikbare services in de context van de XAML-serviceprovider en hoe u deze kunt gebruiken.
Implementaties waarvoor een bepaalde service beschikbaar moet zijn om een nuttig ProvideValue(IServiceProvider) resultaat te produceren, zullen naar verwachting uitzonderingen genereren als die service niet beschikbaar is. De aanbevolen uitzondering om te gooien is InvalidOperationException.
De implementatie kan ook uitzonderingen genereren als een van de argumenten die de aangepaste markeringsextensie nodig heeft om een waarde op te geven null is, ongeldig is voor het gegevenstype of geen waarde bevat die door de markeringsextensie kan worden verwerkt. De aanbevolen uitzondering om te gooien is InvalidOperationException.