Bagikan melalui


IContractBehavior.ApplyClientBehavior Metode

Definisi

Menerapkan modifikasi atau ekstensi klien di seluruh kontrak.

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)

Parameter

contractDescription
ContractDescription

Deskripsi kontrak tempat ekstensi dimaksudkan.

endpoint
ServiceEndpoint

Titik akhir.

clientRuntime
ClientRuntime

Runtime klien.

Contoh

Contoh kode berikut mengasumsikan implementasi kustom IInstanceProvider yang disebut ObjectProviderBehavior yang menyediakan perilaku "singleton"; selalu mengembalikan instans layanan yang sama dan tidak mendaur ulangnya.

Untuk menyisipkan kustomisasi penyedia instans, contoh menunjukkan cara mengimplementasikan atribut kustom (SingletonBehaviorAttribute) yang menerapkan untuk menyisipkan penyedia instans IContractBehavior layanan kustom. Ini juga mengimplementasikan IContractBehaviorAttribute, yang mengikat penggunaannya ke ISampleService kontrak.

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

Keterangan

Terapkan ApplyClientBehavior metode untuk melihat, memodifikasi, atau menambahkan ekstensi kustom ke runtime klien di semua pesan atau untuk satu operasi tertentu. Untuk detail tentang kustomisasi apa yang dapat Anda lakukan dengan objek run-time klien, lihat ClientRuntime dan ClientOperation.

Metode ini ApplyClientBehavior dapat melemparkan NotImplementedException pengecualian jika perilaku hanya ditujukan untuk digunakan dalam aplikasi layanan.

Metode ini dipanggil sekali untuk setiap titik akhir yang menggunakan kontrak layanan yang ditentukan.

Perhatikan bahwa mungkin ada dua operasi dengan nama yang sama dalam deskripsi (satu di setiap arah), jadi jika Anda harus melakukan iterasi melalui operasi di mana kontrak adalah kontrak dupleks, Anda harus menghubungkan arah pesan antara titik ClientRuntime akhir dan yang dikembalikan oleh CallbackDispatchRuntime properti.

Karena perilaku lain mungkin telah menambahkan atau menghapus beberapa operasi dari runtime, tidak ada jaminan bahwa ada jumlah operasi yang sama dalam deskripsi karena ada ClientOperation objek dalam Operations properti.

Berlaku untuk