EndpointBehaviorElementCollection.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //------------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System.Collections;
  7. using System.Configuration;
  8. using System.Globalization;
  9. using System.Collections.Generic;
  10. [ConfigurationCollection(typeof(EndpointBehaviorElement), AddItemName = ConfigurationStrings.Behavior)]
  11. public sealed class EndpointBehaviorElementCollection : ServiceModelEnhancedConfigurationElementCollection<EndpointBehaviorElement>
  12. {
  13. public EndpointBehaviorElementCollection()
  14. : base(ConfigurationStrings.Behavior)
  15. { }
  16. protected override bool ThrowOnDuplicate
  17. {
  18. get { return false; }
  19. }
  20. protected override Object GetElementKey(ConfigurationElement element)
  21. {
  22. if (element == null)
  23. {
  24. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("element");
  25. }
  26. EndpointBehaviorElement configElementKey = (EndpointBehaviorElement)element;
  27. return configElementKey.Name;
  28. }
  29. protected override void BaseAdd(ConfigurationElement element)
  30. {
  31. if (null == element)
  32. {
  33. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("element");
  34. }
  35. EndpointBehaviorElement childEndpointBehaviorElement = element as EndpointBehaviorElement;
  36. string endpointBehaviorElementName = childEndpointBehaviorElement.Name;
  37. EndpointBehaviorElement parentEndpointBehaviorElement = this.BaseGet(endpointBehaviorElementName) as EndpointBehaviorElement;
  38. List<BehaviorExtensionElement> parentExtensionElements = new List<BehaviorExtensionElement>();
  39. if (parentEndpointBehaviorElement != null)
  40. {
  41. foreach (BehaviorExtensionElement parentBehaviorElement in parentEndpointBehaviorElement)
  42. {
  43. parentExtensionElements.Add(parentBehaviorElement);
  44. }
  45. }
  46. childEndpointBehaviorElement.MergeWith(parentExtensionElements);
  47. base.BaseAdd(childEndpointBehaviorElement);
  48. }
  49. }
  50. }