Idioma

IContractBehavior.ApplyClientBehavior Método

Definição

Implementa uma modificação ou extensão do cliente ao longo de um contrato.

public:
 void ApplyClientBehavior(System::ServiceModel::Description::ContractDescription ^ contractDescription, System::ServiceModel::Description::ServiceEndpoint ^ endpoint, System::ServiceModel::Dispatcher::ClientRuntime ^ clientRuntime);
public void ApplyClientBehavior(System.ServiceModel.Description.ContractDescription contractDescription, System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime);
abstract member ApplyClientBehavior : System.ServiceModel.Description.ContractDescription * System.ServiceModel.Description.ServiceEndpoint * System.ServiceModel.Dispatcher.ClientRuntime -> unit
Public Sub ApplyClientBehavior (contractDescription As ContractDescription, endpoint As ServiceEndpoint, clientRuntime As ClientRuntime)

Parâmetros

contractDescription
ContractDescription

A descrição do contrato para a qual a extensão se destina.

endpoint
ServiceEndpoint

O ponto final.

clientRuntime
ClientRuntime

O tempo de execução do cliente.

Exemplos

O exemplo de código seguinte assume uma implementação personalizada IInstanceProvider chamada ObjectProviderBehavior que fornece um comportamento "singleton"; ela devolve sempre a mesma instância de serviço e não a recicla.

Para inserir a personalização do fornecedor de instâncias, o exemplo mostra como implementar um atributo personalizado (SingletonBehaviorAttribute) que implementa IContractBehavior a inserção do fornecedor de instância de serviço personalizado. Também implementa IContractBehaviorAttribute, que vincula o seu uso ao ISampleService contrato.

public class SingletonBehaviorAttribute : Attribute, IContractBehaviorAttribute, IContractBehavior
{

  #region IContractBehaviorAttribute Members

  public Type TargetContract
  {
    get { return typeof(ISampleService); }
  }

  #endregion

  #region IContractBehavior Members

  public void AddBindingParameters(ContractDescription description, ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection parameters)
  {
    return;
  }

  public void ApplyClientBehavior(ContractDescription description, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
  {
    return;
  }

  public void ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, DispatchRuntime dispatch)
  {
    dispatch.InstanceProvider = new ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.");
  }

  public void Validate(ContractDescription description, ServiceEndpoint endpoint)
  {
    return;
  }

  #endregion
}

Observações

Implemente o ApplyClientBehavior método para visualizar, modificar ou adicionar extensões personalizadas ao runtime do cliente em todas as mensagens ou para uma operação específica. Para detalhes sobre as personalizações que pode fazer com um objeto em tempo de execução do cliente, veja ClientRuntime e ClientOperation.

O ApplyClientBehavior método pode lançar uma NotImplementedException exceção se o comportamento for destinado apenas a ser usado numa aplicação de serviço.

Este método é chamado uma vez para cada endpoint que utilize o contrato de serviço especificado.

Note que podem existir duas operações com o mesmo nome na descrição (uma em cada direção), por isso, se tiver de iterar através de operações onde o contrato é um contrato duplex, deve correlacionar a direção da mensagem entre o ponto final ClientRuntime e aquela devolvida pela CallbackDispatchRuntime propriedade.

Como outros comportamentos podem já ter adicionado ou removido algumas operações do tempo de execução, não há garantia de que existam o mesmo número de operações na descrição como ClientOperation de objetos na Operations propriedade.

Aplica-se a