MarkupExtension.ProvideValue(IServiceProvider) Método

Definição

Quando implementado numa classe derivada, devolve um objeto que é fornecido como valor da propriedade alvo para esta extensão de marcação.

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

Parâmetros

serviceProvider
IServiceProvider

Um assistente prestador de serviços que pode fornecer serviços para a extensão de marcação.

Devoluções

O valor do objeto a definir na propriedade onde a extensão é aplicada.

Observações

Quando um processador XAML processa um nó tipo e um valor de membro que é uma extensão de marcação, invoca o ProvideValue método dessa extensão de marcação e escreve o resultado no grafo objeto ou no fluxo de serialização. O escritor de objetos XAML passa o contexto do serviço a cada uma dessas implementações através do serviceProvider parâmetro.

Consulte a secção "Notas para Implementadores" para mais informações sobre como implementar ProvideValue uma extensão de marcação personalizada.

Notas de uso do WPF

Importante

WPF classes que têm interações específicas com operações de conjunto de marcação não devem depender de IReceiveMarkupExtension para uma implementação .NET Framework 4. Use XamlSetMarkupExtensionAttributeos callbacks -atribuídos em vez disso.

Notas para Implementadores

Os serviços comuns devolvidos pelo fornecedor de serviços padrão, normalmente disponíveis para uma implementação personalizada ou existente MarkupExtension , incluem os seguintes serviços principais.

Potencialmente, as implementações de ProvideValue(IServiceProvider) podem ignorar o serviceProvider parâmetro. Isto é viável para alguns cenários básicos, onde não é necessário qualquer contexto para devolver um valor.

No uso típico, os Serviços XAML do Framework .NET e os escritores de objetos XAML implementados fornecem um fornecedor de serviços a todos os métodos de conversor de valor invocados durante o processamento XAML. No entanto, para robustez, deve fornecer caminhos de código para valores nulos tanto para o próprio fornecedor de serviço como para qualquer serviço solicitado. Podem ocorrer valores nulos se a sua extensão de marcação for aplicada numa situação em que o suporte típico de serviço fornecido por uma infraestrutura de processador XAML não está disponível.

Para mais informações sobre os serviços disponíveis no contexto do fornecedor de serviços XAML e como os utilizar, consulte Conversores de Tipos e Extensões de Marcação para XAML.

Implementações que exigem que um determinado serviço esteja disponível para produzir um resultado útil ProvideValue(IServiceProvider) devem lançar exceções se esse serviço não estiver disponível. A exceção recomendada ao lançamento é InvalidOperationException.

A implementação pode também lançar exceções se um dos argumentos que a extensão de marcação personalizada necessita para fornecer um valor for nulo, for inválido para o seu tipo de dado ou não contiver um valor que a extensão de marcação seja capaz de processar. A exceção recomendada ao lançamento é InvalidOperationException.

Aplica-se a

Ver também