次の方法で共有


IContractBehaviorAttribute インターフェイス

定義

IContractBehavior インターフェイスを実装する属性をアクティブにする対象のコントラクトを指定します。

public interface class IContractBehaviorAttribute
public interface IContractBehaviorAttribute
type IContractBehaviorAttribute = interface
Public Interface IContractBehaviorAttribute
派生

次のコード例は、カスタムの System.ServiceModel.Dispatcher.IInstanceProvider 実装が "シングルトン" 動作を提供する ObjectProviderBehavior を呼び出したことを前提としています。これは、常に同じサービス インスタンスを返し、リサイクルはしません。

インスタンス プロバイダーのカスタマイズを挿入するために、例では、SingletonBehaviorAttribute を実装するカスタム属性 (System.ServiceModel.Description.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
}
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

注釈

IContractBehaviorAttribute オブジェクトである属性に System.ServiceModel.Description.IContractBehavior インターフェイスを実装して、サービス型でそのコントラクトの動作属性を使用できるようにします。ただし、コントラクトの動作属性が適用される対象は、TargetContract プロパティで指定されたコントラクトに制限されます。

カスタム コントラクトの動作属性に IContractBehaviorAttribute を実装する必要はありません。属性がコントラクト インターフェイスまたは双方向コールバック クラスに適用される場合、TargetContract プロパティは無視されます。

詳細については、「System.ServiceModel.Description.IContractBehavior」を参照してください。

プロパティ

TargetContract

コントラクトの動作を適用できるコントラクトの型を取得します。

適用対象