2009-05-25 21 views

答えて

3

あなたはそれを使用するように.SVCファイルを設定し、custom service hostを構築する必要があります。カスタムサービスホストでは、ビヘイビアの設定など、開始前にサービスに好きなことを実行できます。操作ビヘイビアを使用する必要があるため、OnOpening()メソッドで行う必要があります。サービスファクトリが適用されるときに、エンドポイントビヘイビアが設定された後に操作ビヘイビアがリセットされます。 OnOpeningのエンドポイントと操作を反復することができます。

8

あなたは属性としてそれを添付できます。

public class CustomInspectorAttribute : Attribute, IOperationBehavior, IParameterInspector 
{ 
    #region IOperationBehavior Members 

    public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters) 
    { 
    } 

    public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation) 
    { 
     // Attribute could be used on client side 
     clientOperation.ParameterInspectors.Add(this); 
    } 

    public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation) 
    { 
     // Attribute could be used on server side 
     dispatchOperation.ParameterInspectors.Add(this); 
    } 

    public void Validate(OperationDescription operationDescription) 
    { 
    } 

    #endregion 




    #region IParameterInspector Members 

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState) 
    { 
     // Do something with returned values from operation 
    } 

    public object BeforeCall(string operationName, object[] inputs) 
    { 
     // Do something with incoming parameters before invoking actual operation 
     return null; 
    } 

    #endregion 
} 

と操作に属性を付ける

[ServiceContract] 
public interface ICustomServiceContract 
{ 
    [CustomInspector] 
    [OperationContract] 
    void MyOperation(); 
} 
+0

タイトルは「プログラム的」と言う、言葉があなたのために異なった事を意味していることは明白であると私は –

+0

これははるかに良い答えです。ありがとう。 – ROFLwTIME

関連する問題