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
- TextDecorations.cs
- CommandHelper.cs
- SystemResources.cs
- TransformerInfoCollection.cs
- TemplateNameScope.cs
- SByte.cs
- TextTreePropertyUndoUnit.cs
- Win32Native.cs
- PasswordDeriveBytes.cs
- WhitespaceRule.cs
- RegexInterpreter.cs
- ZipIOCentralDirectoryFileHeader.cs
- SafeProcessHandle.cs
- SystemGatewayIPAddressInformation.cs
- TableLayoutColumnStyleCollection.cs
- WindowsUpDown.cs
- FolderBrowserDialog.cs
- EntityDataSourceQueryBuilder.cs
- XmlCustomFormatter.cs
- ClientSideQueueItem.cs
- CompatibleIComparer.cs
- KeyedCollection.cs
- CodeEventReferenceExpression.cs
- DBBindings.cs
- TextTreeTextBlock.cs
- Color.cs
- FormsAuthenticationUser.cs
- COM2ExtendedUITypeEditor.cs
- IsolatedStorage.cs
- QilReference.cs
- TakeQueryOptionExpression.cs
- CustomServiceCredentials.cs
- GridItem.cs
- DecimalAnimationBase.cs
- RunInstallerAttribute.cs
- RangeValuePatternIdentifiers.cs
- ZoneMembershipCondition.cs
- XmlnsCache.cs
- CreateUserWizard.cs
- XmlCharCheckingWriter.cs
- EllipseGeometry.cs
- SerializerProvider.cs
- ConstructorExpr.cs
- CommandHelpers.cs
- _HelperAsyncResults.cs
- NonPrimarySelectionGlyph.cs
- DynamicDataRouteHandler.cs
- ConstructorBuilder.cs
- ClientScriptManagerWrapper.cs
- SizeValueSerializer.cs
- ContentPlaceHolder.cs
- CmsInterop.cs
- DynamicResourceExtensionConverter.cs
- KeyGestureValueSerializer.cs
- HostedImpersonationContext.cs
- ListViewSortEventArgs.cs
- TaiwanLunisolarCalendar.cs
- UnmanagedMemoryStream.cs
- URL.cs
- TextEncodedRawTextWriter.cs
- SemanticResolver.cs
- GridSplitter.cs
- wgx_commands.cs
- DelegateArgument.cs
- CodeRegionDirective.cs
- WindowsToolbarAsMenu.cs
- FragmentQuery.cs
- InArgumentConverter.cs
- KeyGestureValueSerializer.cs
- MobileControlBuilder.cs
- WaitForChangedResult.cs
- GenericUriParser.cs
- Panel.cs
- SignatureResourcePool.cs
- FamilyCollection.cs
- Substitution.cs
- SrgsElementFactoryCompiler.cs
- Exceptions.cs
- SettingsContext.cs
- HMACSHA384.cs
- FilePrompt.cs
- GradientStopCollection.cs
- VideoDrawing.cs
- GenericUriParser.cs
- ContextBase.cs
- Point.cs
- ContentFilePart.cs
- HttpRuntimeSection.cs
- ToolboxItemCollection.cs
- TemplateBindingExpression.cs
- BookmarkEventArgs.cs
- FlowDocumentReader.cs
- XmlSchemaType.cs
- DBParameter.cs
- XmlSerializableReader.cs
- TextBoxDesigner.cs
- TableRow.cs
- EdmToObjectNamespaceMap.cs
- DesignerListAdapter.cs
- DrawingImage.cs