語言

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 檢視、修改或新增自訂擴充功能的方法,涵蓋所有訊息或單一特定操作。 關於客戶端執行時物件可進行的自訂細節,請參見 ClientRuntime 和 ClientOperation。

若該行為僅用於服務應用程式,該 ApplyClientBehavior 方法可拋出 NotImplementedException 例外。

此方法對每個使用指定服務合約的端點呼叫一次。

請注意,描述中可以有兩個同名操作(分別在兩個方向),因此如果你必須遍歷合約為雙工合約的操作,必須將端點 ClientRuntime 與屬性回傳 CallbackDispatchRuntime 的訊息方向對應起來。

由於其他行為可能已經從執行時新增或移除了一些操作,無法保證描述 ClientOperation 中的操作數量與屬性中的 Operations 物件數量相同。

適用於