Я сделал тест и добился успеха, но я разделяю IParameterInspector и IOperationBehavior
Ниже мой код.
Моя модель.
[DataContract]
public class Employee
{
[DataMember]
public string Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Department { get; set; }
[DataMember]
public string Grade { get; set; }
}
ParameterInspector
public class MyParameterInspector : IParameterInspector
{
public void AfterCall(string operationName, object[] outputs,objectreturnValue, object correlationState)
{
}
public object BeforeCall(string operationName, object[] inputs)
{
Employee ee = inputs[0] as Employee;
ee.Name = "myname";
return inputs;
}
}
OperationBehavior
public class ParameterInspectorOperationBehavior :Attribute, IOperationBehavior
{
public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
}
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
dispatchOperation.ParameterInspectors.Add(new MyParameterInspector());
}
public void Validate(OperationDescription operationDescription)
{
}
}
ServiceContract
[ServiceContract]
public interface IRestService
{
[ParameterInspectorOperationBehavior]
[WebInvoke(UriTemplate="/", Method = "POST", ResponseFormat =WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
void Get(Employee employee);
}
Сервисная конфигурация
<service name="Service.Rest.RestService">
<endpoint address="http://localhost:3721/employee" contract="ServiceInterface.IRestService" binding="webHttpBinding"></endpoint>
</service>
Конфигурация клиента
<endpoint name="RestParameterInspector" address="http://localhost:3721/employee" contract="ServiceInterface.IRestService" binding="webHttpBinding"
behaviorConfiguration="webBehavior"></endpoint>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
Результат