Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / XmlElementElement.cs / 1 / XmlElementElement.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Configuration { using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Configuration; using System.Xml; using System.Security; public sealed partial class XmlElementElement : ConfigurationElement { public XmlElementElement() { } public XmlElementElement(XmlElement element) : this() { this.XmlElement = element; } public void Copy(XmlElementElement source) { if (this.IsReadOnly()) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigReadOnly))); } if (null == source) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source"); } if (null != source.XmlElement) { this.XmlElement = (XmlElement)source.XmlElement.Clone(); } } ////// 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) /// [SecurityCritical, SecurityTreatAsSafe] protected override void DeserializeElement(XmlReader reader, bool serializeCollectionKey) { SetIsPresent(); DeserializeElementCore(reader); } private void DeserializeElementCore(XmlReader reader) { XmlDocument doc = new XmlDocument(); this.XmlElement = (XmlElement)doc.ReadNode(reader); } internal void ResetInternal(XmlElementElement element) { this.Reset(element); } ////// Critical - calls ConfigurationHelpers.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.XmlElement != null; if (dataToWrite && writer != null) { if (!String.Equals(elementName, ConfigurationStrings.XmlElement, StringComparison.Ordinal)) { writer.WriteStartElement(elementName); } using (XmlNodeReader reader = new XmlNodeReader(this.XmlElement)) { writer.WriteNode(reader, false); } if (!String.Equals(elementName, ConfigurationStrings.XmlElement, StringComparison.Ordinal)) { writer.WriteEndElement(); } } return dataToWrite; } protected override void PostDeserialize() { this.Validate(); base.PostDeserialize(); } void Validate() { if (this.XmlElement == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigXmlElementMustBeSet), this.ElementInformation.Source, this.ElementInformation.LineNumber)); } } [ConfigurationProperty(ConfigurationStrings.XmlElement, DefaultValue = null, Options = ConfigurationPropertyOptions.IsKey)] public XmlElement XmlElement { get { return (XmlElement)base[ConfigurationStrings.XmlElement]; } set { base[ConfigurationStrings.XmlElement] = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XamlPointCollectionSerializer.cs
- AsyncOperation.cs
- UserValidatedEventArgs.cs
- ThreadSafeList.cs
- Literal.cs
- SimpleExpression.cs
- FormViewInsertEventArgs.cs
- DataGridViewCellMouseEventArgs.cs
- TextBoxAutomationPeer.cs
- XmlAttributeOverrides.cs
- ManagementEventArgs.cs
- X509CertificateStore.cs
- OdbcEnvironmentHandle.cs
- ComboBoxRenderer.cs
- SqlVersion.cs
- CharacterHit.cs
- CodeTypeDelegate.cs
- AQNBuilder.cs
- BinaryObjectReader.cs
- DesignerVerbCollection.cs
- TemplateParser.cs
- EventMappingSettingsCollection.cs
- Latin1Encoding.cs
- MimeReturn.cs
- StringToken.cs
- TypeBuilder.cs
- MatrixTransform3D.cs
- ServiceDescription.cs
- NamespaceCollection.cs
- InertiaRotationBehavior.cs
- JsonEncodingStreamWrapper.cs
- DataRelationPropertyDescriptor.cs
- ProcessInfo.cs
- EncoderNLS.cs
- VectorAnimationBase.cs
- Soap12ProtocolReflector.cs
- Vector.cs
- AsymmetricSignatureDeformatter.cs
- ControlsConfig.cs
- Profiler.cs
- DocumentAutomationPeer.cs
- ReceiveSecurityHeaderElementManager.cs
- BufferedStream.cs
- HtmlGenericControl.cs
- HandleRef.cs
- SplayTreeNode.cs
- SmtpMail.cs
- TypeTypeConverter.cs
- WmlTextViewAdapter.cs
- UpDownEvent.cs
- SymbolTable.cs
- clipboard.cs
- Guid.cs
- RelatedImageListAttribute.cs
- DataMisalignedException.cs
- XmlSchemaExternal.cs
- CodeTypeReferenceCollection.cs
- _BasicClient.cs
- TripleDESCryptoServiceProvider.cs
- NotFiniteNumberException.cs
- PrimaryKeyTypeConverter.cs
- DataControlField.cs
- HtmlImage.cs
- ClientFormsIdentity.cs
- SoapSchemaMember.cs
- TextBoxBase.cs
- WsiProfilesElementCollection.cs
- MsmqOutputChannel.cs
- LocatorBase.cs
- DomainUpDown.cs
- FixedSOMGroup.cs
- KeyValueConfigurationElement.cs
- VisualTreeUtils.cs
- ImageAutomationPeer.cs
- ComplusEndpointConfigContainer.cs
- LayoutEvent.cs
- SecurityCriticalDataForSet.cs
- HealthMonitoringSection.cs
- EmissiveMaterial.cs
- MessageEncodingBindingElementImporter.cs
- StrokeCollectionDefaultValueFactory.cs
- MapPathBasedVirtualPathProvider.cs
- HttpsHostedTransportConfiguration.cs
- BounceEase.cs
- thaishape.cs
- CapacityStreamGeometryContext.cs
- altserialization.cs
- TransmissionStrategy.cs
- DataContractSet.cs
- BinaryKeyIdentifierClause.cs
- ContourSegment.cs
- ImageConverter.cs
- SingleObjectCollection.cs
- _ListenerRequestStream.cs
- CachedFontFamily.cs
- ParameterToken.cs
- Win32Exception.cs
- XmlQuerySequence.cs
- HashSetDebugView.cs
- MethodRental.cs