Idioma

IContractBehavior.ApplyDispatchBehavior Método

Definição

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

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

Parâmetros

contractDescription
ContractDescription

A descrição do contrato será modificada.

endpoint
ServiceEndpoint

O ponto final que expõe o contrato.

dispatchRuntime
DispatchRuntime

O tempo de execução de despacho que controla a execução do serviço.

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 a ApplyDispatchBehavior opção de ver, modificar ou adicionar extensões personalizadas ao tempo de execução do serviço em todas as mensagens de um contrato específico ou para uma operação específica nesse contrato. Para detalhes sobre as personalizações que pode realizar numa aplicação de serviço, consulte DispatchRuntime e DispatchOperation.

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

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 DispatchRuntime e aquela devolvida pela CallbackClientRuntime propriedade.

Além disso, 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 do que DispatchOperation há objetos na Operations propriedade.

Aplica-se a