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
- _ContextAwareResult.cs
- EntityTransaction.cs
- SqlUtil.cs
- BroadcastEventHelper.cs
- Utility.cs
- cookie.cs
- RulePatternOps.cs
- AgileSafeNativeMemoryHandle.cs
- RowBinding.cs
- WebPartChrome.cs
- UrlMappingsSection.cs
- UniqueIdentifierService.cs
- ObjectSet.cs
- CounterCreationDataCollection.cs
- QueryStringParameter.cs
- EditorResources.cs
- TextDecorationCollection.cs
- XComponentModel.cs
- CustomErrorsSection.cs
- ObjectDisposedException.cs
- RecipientInfo.cs
- HttpModuleActionCollection.cs
- SecurityException.cs
- BindingList.cs
- SoapAttributeOverrides.cs
- UnsafeCollabNativeMethods.cs
- EdmError.cs
- SpellerError.cs
- _NTAuthentication.cs
- Cursors.cs
- SqlDataSourceSummaryPanel.cs
- DbConnectionStringCommon.cs
- UrlMappingsModule.cs
- ReflectionPermission.cs
- UpdateException.cs
- BaseUriHelper.cs
- CodeChecksumPragma.cs
- WindowsSpinner.cs
- StylusEventArgs.cs
- WebPartCancelEventArgs.cs
- FacetValues.cs
- SqlPersonalizationProvider.cs
- MultiAsyncResult.cs
- ResourceIDHelper.cs
- Substitution.cs
- SimplePropertyEntry.cs
- FocusChangedEventArgs.cs
- EllipseGeometry.cs
- MethodExpr.cs
- AttributeUsageAttribute.cs
- xmlsaver.cs
- CollectionContainer.cs
- OleDbMetaDataFactory.cs
- AggregateException.cs
- LogicalTreeHelper.cs
- StickyNoteHelper.cs
- httpstaticobjectscollection.cs
- TracingConnection.cs
- AttributeEmitter.cs
- XmlSerializerFactory.cs
- CommentEmitter.cs
- OdbcParameter.cs
- XsltException.cs
- Int64AnimationBase.cs
- Odbc32.cs
- OleDbRowUpdatingEvent.cs
- TimeSpanParse.cs
- __Filters.cs
- ServiceOperation.cs
- TextBreakpoint.cs
- ConstructorExpr.cs
- ConfigXmlSignificantWhitespace.cs
- ControlLocalizer.cs
- ProcessModelSection.cs
- SystemColorTracker.cs
- IResourceProvider.cs
- FixedStringLookup.cs
- TemplatePagerField.cs
- CapacityStreamGeometryContext.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- RequestQueue.cs
- XPathNode.cs
- StrongNameKeyPair.cs
- AnnotationDocumentPaginator.cs
- SymLanguageVendor.cs
- StaticFileHandler.cs
- loginstatus.cs
- PropertyDescriptor.cs
- BStrWrapper.cs
- WSSecurityPolicy12.cs
- PrincipalPermission.cs
- Misc.cs
- Executor.cs
- FixedSOMTableCell.cs
- _SslState.cs
- ProxyElement.cs
- IItemContainerGenerator.cs
- WizardStepBase.cs
- ProcessProtocolHandler.cs
- FixedSOMPage.cs