ProtoBehaviorAttribute.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #if FEAT_SERVICEMODEL && PLAT_XMLSERIALIZER
  2. using System;
  3. using System.ServiceModel.Channels;
  4. using System.ServiceModel.Description;
  5. using System.ServiceModel.Dispatcher;
  6. namespace ProtoBuf.ServiceModel
  7. {
  8. /// <summary>
  9. /// Uses protocol buffer serialization on the specified operation; note that this
  10. /// must be enabled on both the client and server.
  11. /// </summary>
  12. [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
  13. public sealed class ProtoBehaviorAttribute : Attribute, IOperationBehavior
  14. {
  15. void IOperationBehavior.AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)
  16. { }
  17. void IOperationBehavior.ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
  18. {
  19. IOperationBehavior innerBehavior = new ProtoOperationBehavior(operationDescription);
  20. innerBehavior.ApplyClientBehavior(operationDescription, clientOperation);
  21. }
  22. void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
  23. {
  24. IOperationBehavior innerBehavior = new ProtoOperationBehavior(operationDescription);
  25. innerBehavior.ApplyDispatchBehavior(operationDescription, dispatchOperation);
  26. }
  27. void IOperationBehavior.Validate(OperationDescription operationDescription)
  28. { }
  29. }
  30. }
  31. #endif