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
}
Public Class SingletonBehaviorAttribute
    Inherits Attribute
    Implements IContractBehaviorAttribute, IContractBehavior

  #Region "IContractBehaviorAttribute Members"

  Public ReadOnly Property TargetContract() As Type Implements IContractBehaviorAttribute.TargetContract
    Get
        Return GetType(ISampleService)
    End Get
  End Property

  #End Region

  #Region "IContractBehavior Members"

  Public Sub AddBindingParameters(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal parameters As System.ServiceModel.Channels.BindingParameterCollection) Implements IContractBehavior.AddBindingParameters
    Return
  End Sub

  Public Sub ApplyClientBehavior(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal clientRuntime As ClientRuntime) Implements IContractBehavior.ApplyClientBehavior
    Return
  End Sub

  Public Sub ApplyDispatchBehavior(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal dispatch As DispatchRuntime) Implements IContractBehavior.ApplyDispatchBehavior
    dispatch.InstanceProvider = New ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.")
  End Sub

  Public Sub Validate(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint) Implements IContractBehavior.Validate
    Return
  End Sub

  #End Region
End Class

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