You can attach it as an attribute:
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 }
And attach the attribute to the operation
[ServiceContract] public interface ICustomServiceContract { [CustomInspector] [OperationContract] void MyOperation(); }
source share