PolicyConversionContext.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //-----------------------------------------------------------------------------
  4. namespace System.ServiceModel.Description
  5. {
  6. using System.Xml;
  7. using System.ServiceModel.Channels;
  8. using System.Collections;
  9. using System.Collections.Generic;
  10. using System.Collections.ObjectModel;
  11. public abstract class PolicyConversionContext
  12. {
  13. readonly ContractDescription contract;
  14. protected PolicyConversionContext(ServiceEndpoint endpoint)
  15. {
  16. if (endpoint == null)
  17. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("endpoint");
  18. this.contract = endpoint.Contract;
  19. }
  20. public abstract BindingElementCollection BindingElements { get; }
  21. internal virtual BindingParameterCollection BindingParameters
  22. {
  23. get
  24. {
  25. return null;
  26. }
  27. }
  28. public ContractDescription Contract { get { return this.contract; } }
  29. public abstract PolicyAssertionCollection GetBindingAssertions();
  30. public abstract PolicyAssertionCollection GetOperationBindingAssertions(OperationDescription operation);
  31. public abstract PolicyAssertionCollection GetMessageBindingAssertions(MessageDescription message);
  32. public abstract PolicyAssertionCollection GetFaultBindingAssertions(FaultDescription fault);
  33. internal static XmlElement FindAssertion(ICollection<XmlElement> assertions, string localName, string namespaceUri, bool remove)
  34. {
  35. XmlElement result = null;
  36. foreach (XmlElement assertion in assertions)
  37. {
  38. if ((assertion.LocalName == localName) &&
  39. ((namespaceUri == null) || (assertion.NamespaceURI == namespaceUri)))
  40. {
  41. result = assertion;
  42. if (remove)
  43. assertions.Remove(result);
  44. break;
  45. }
  46. }
  47. return result;
  48. }
  49. }
  50. }