| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- //------------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------------------------
- namespace System.ServiceModel.Configuration
- {
- using System;
- using System.Configuration;
- using System.ServiceModel.Channels;
- using System.Xml;
- using System.Security;
- using System.Runtime;
- public sealed partial class AddressHeaderCollectionElement : ServiceModelConfigurationElement
- {
- public AddressHeaderCollectionElement()
- {
- }
- internal void Copy(AddressHeaderCollectionElement source)
- {
- if (source == null)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
- }
- PropertyInformationCollection properties = source.ElementInformation.Properties;
- if (properties[ConfigurationStrings.Headers].ValueOrigin != PropertyValueOrigin.Default)
- {
- this.Headers = source.Headers;
- }
- }
- [ConfigurationProperty(ConfigurationStrings.Headers, DefaultValue = null)]
- public AddressHeaderCollection Headers
- {
- get
- {
- AddressHeaderCollection retVal = (AddressHeaderCollection)base[ConfigurationStrings.Headers];
- if (null == retVal)
- {
- retVal = AddressHeaderCollection.EmptyHeaderCollection;
- }
- return retVal;
- }
- set
- {
- if (value == null)
- {
- value = AddressHeaderCollection.EmptyHeaderCollection;
- }
- base[ConfigurationStrings.Headers] = value;
- }
- }
- [Fx.Tag.SecurityNote(Critical = "Uses the critical helper SetIsPresent.",
- Safe = "Controls how/when SetIsPresent is used, not arbitrarily callable from PT (method is protected and class is sealed).")]
- [SecuritySafeCritical]
- protected override void DeserializeElement(XmlReader reader, bool serializeCollectionKey)
- {
- SetIsPresent();
- DeserializeElementCore(reader);
- }
- private void DeserializeElementCore(XmlReader reader)
- {
- this.Headers = AddressHeaderCollection.ReadServiceParameters(XmlDictionaryReader.CreateDictionaryReader(reader));
- }
- [Fx.Tag.SecurityNote(Critical = "Uses the critical helper SetIsPresent which elevates in order to set a property.",
- Safe = "Only passes 'this', does not let caller influence parameter.")]
- [SecurityCritical]
- void SetIsPresent()
- {
- ConfigurationHelpers.SetIsPresent(this);
- }
- protected override bool SerializeToXmlElement(XmlWriter writer, String elementName)
- {
- bool dataToWrite = this.Headers.Count != 0;
- if (dataToWrite && writer != null)
- {
- writer.WriteStartElement(elementName);
- this.Headers.WriteContentsTo(XmlDictionaryWriter.CreateDictionaryWriter(writer));
- writer.WriteEndElement();
- }
- return dataToWrite;
- }
- internal void InitializeFrom(AddressHeaderCollection headers)
- {
- SetPropertyValueIfNotDefaultValue(ConfigurationStrings.Headers, headers);
- }
- }
- }
|