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
- SourceFileBuildProvider.cs
- DesignerCategoryAttribute.cs
- GridViewRowCollection.cs
- PublishLicense.cs
- MDIControlStrip.cs
- mactripleDES.cs
- WebPageTraceListener.cs
- MimeWriter.cs
- DefaultExpression.cs
- WebPartConnection.cs
- UnmanagedMemoryStreamWrapper.cs
- ExpandSegment.cs
- _SslStream.cs
- DataServiceProviderWrapper.cs
- ApplyTemplatesAction.cs
- Utils.cs
- Rect.cs
- TextAnchor.cs
- InputMethod.cs
- DataServiceRequestOfT.cs
- RsaSecurityKey.cs
- ByteKeyFrameCollection.cs
- Inline.cs
- Int32Converter.cs
- SiteMapProvider.cs
- DesignerAttributeInfo.cs
- HttpApplicationStateBase.cs
- SolidColorBrush.cs
- WindowsSpinner.cs
- DataGridViewCellValueEventArgs.cs
- CommandManager.cs
- RuntimeCompatibilityAttribute.cs
- BinaryConverter.cs
- ApplicationFileParser.cs
- HuffmanTree.cs
- UnknownBitmapEncoder.cs
- LayoutEditorPart.cs
- ReaderContextStackData.cs
- FamilyCollection.cs
- PtsHelper.cs
- XPathChildIterator.cs
- RequestQueryParser.cs
- SecureUICommand.cs
- ClientFactory.cs
- Selector.cs
- PenLineCapValidation.cs
- SwitchElementsCollection.cs
- PageSettings.cs
- SmiEventSink.cs
- SpnEndpointIdentityExtension.cs
- EntityModelSchemaGenerator.cs
- ScriptingWebServicesSectionGroup.cs
- ArrayExtension.cs
- HtmlSelect.cs
- AdRotator.cs
- DBConcurrencyException.cs
- RIPEMD160Managed.cs
- CheckableControlBaseAdapter.cs
- ProfileManager.cs
- SID.cs
- QueryPageSettingsEventArgs.cs
- ObjectRef.cs
- TimeIntervalCollection.cs
- XPathExpr.cs
- DecimalAnimationUsingKeyFrames.cs
- ProcessInfo.cs
- ElementAction.cs
- HttpListenerPrefixCollection.cs
- LocalValueEnumerator.cs
- PrintDocument.cs
- GeometryHitTestParameters.cs
- UserNamePasswordClientCredential.cs
- LoginName.cs
- DataBindingExpressionBuilder.cs
- DefaultTextStoreTextComposition.cs
- DateTimeFormatInfoScanner.cs
- DataBindingHandlerAttribute.cs
- XmlSchemaComplexType.cs
- ErrorWrapper.cs
- MetadataArtifactLoaderCompositeResource.cs
- HtmlInputText.cs
- ImpersonateTokenRef.cs
- safelinkcollection.cs
- VectorAnimationUsingKeyFrames.cs
- TabItemAutomationPeer.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- Int64.cs
- CodeEventReferenceExpression.cs
- MembershipPasswordException.cs
- XPathDocumentIterator.cs
- PatternMatcher.cs
- CachedPathData.cs
- CommandValueSerializer.cs
- CodeTypeParameterCollection.cs
- ProfileEventArgs.cs
- FrameworkPropertyMetadata.cs
- JumpList.cs
- ProfileServiceManager.cs
- IgnoreDataMemberAttribute.cs
- SamlDoNotCacheCondition.cs