Language

IContractBehavior.ApplyClientBehavior メソッド

定義

コントラクト全体でクライアントの変更または拡張を実装します。

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)

パラメーター

contractDescription
ContractDescription

拡張機能が意図されているコントラクトの説明。

endpoint
ServiceEndpoint

エンドポイント。

clientRuntime
ClientRuntime

クライアント ランタイム。

例

次のコード例では、"シングルトン" 動作を提供する IInstanceProvider と呼ばれるカスタム ObjectProviderBehavior実装を想定しています。これは常に同じサービス インスタンスを返し、リサイクルしません。

インスタンス プロバイダーのカスタマイズを挿入するために、この例では、カスタム サービス インスタンス プロバイダーを挿入するSingletonBehaviorAttributeを実装するカスタム属性 (IContractBehavior) を実装する方法を示します。 また、IContractBehaviorAttribute コントラクトに使用をバインドするISampleServiceも実装します。

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
}

注釈

ApplyClientBehavior メソッドを実装して、すべてのメッセージまたは 1 つの特定の操作について、クライアント ランタイムにカスタム拡張機能を表示、変更、または追加します。 クライアント ランタイム オブジェクトで実行できるカスタマイズの詳細については、 ClientRuntime と ClientOperationに関するページを参照してください。

動作がサービス アプリケーションでのみ使用される場合、 ApplyClientBehavior メソッドは NotImplementedException 例外をスローできます。

このメソッドは、指定されたサービス コントラクトを使用するエンドポイントごとに 1 回呼び出されます。

説明には同じ名前を持つ 2 つの操作 (各方向に 1 つずつ) が存在する可能性があるため、コントラクトが双方向コントラクトである操作を反復処理する必要がある場合は、エンドポイント ClientRuntime と CallbackDispatchRuntime プロパティによって返されるメッセージの方向を関連付ける必要があります。

他の動作では、ランタイムに対して一部の操作が既に追加または削除されている可能性があるため、ClientOperation プロパティにOperationsオブジェクトがある場合と同じ数の操作が説明に含まれているという保証はありません。

適用対象