Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / ExtensionDataObject.cs / 2 / ExtensionDataObject.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Runtime.Serialization { using System; using System.Xml; using System.Collections.Generic; using System.Globalization; public sealed class ExtensionDataObject { IListmembers; #if USE_REFEMIT public ExtensionDataObject() #else internal ExtensionDataObject() #endif { } #if USE_REFEMIT public IList Members #else internal IList Members #endif { get { return members; } set { members = value; } } } #if USE_REFEMIT public class ExtensionDataMember #else internal class ExtensionDataMember #endif { string name; string ns; IDataNode value; int memberIndex; #if USE_REFEMIT public string Name #else internal string Name #endif { get { return name; } set { name = value; } } #if USE_REFEMIT public string Namespace #else internal string Namespace #endif { get { return ns; } set { ns = value; } } #if USE_REFEMIT public IDataNode Value #else internal IDataNode Value #endif { get { return value; } set { this.value = value; } } #if USE_REFEMIT public int MemberIndex #else internal int MemberIndex #endif { get { return memberIndex; } set { memberIndex = value; } } } #if USE_REFEMIT public interface IDataNode #else internal interface IDataNode #endif { Type DataType { get; } object Value { get; set; } // boxes for primitives string DataContractName { get; set; } string DataContractNamespace { get; set; } string ClrTypeName { get; set; } string ClrAssemblyName { get; set; } string Id { get; set; } bool PreservesReferences { get; } // NOTE: consider moving below APIs to DataNode if IDataNode API is made public void GetData(ElementData element); bool IsFinalValue { get; set; } void Clear(); } internal class DataNode : IDataNode { protected Type dataType; T value; string dataContractName; string dataContractNamespace; string clrTypeName; string clrAssemblyName; string id = Globals.NewObjectId; bool isFinalValue; internal DataNode() { this.dataType = typeof(T); this.isFinalValue = true; } internal DataNode(T value) : this() { this.value = value; } public Type DataType { get { return dataType; } } public object Value { get { return value; } set { this.value = (T)value; } } bool IDataNode.IsFinalValue { get { return isFinalValue; } set { isFinalValue = value; } } public T GetValue() { return value; } #if NotUsed public void SetValue(T value) { this.value = value; } #endif public string DataContractName { get { return dataContractName; } set { dataContractName = value; } } public string DataContractNamespace { get { return dataContractNamespace; } set { dataContractNamespace = value; } } public string ClrTypeName { get { return clrTypeName; } set { clrTypeName = value; } } public string ClrAssemblyName { get { return clrAssemblyName; } set { clrAssemblyName = value; } } public bool PreservesReferences { get { return (Id != Globals.NewObjectId); } } public string Id { get { return id; } set { id = value; } } public virtual void GetData(ElementData element) { element.dataNode = this; element.attributeCount = 0; element.childElementIndex = 0; if (DataContractName != null) AddQualifiedNameAttribute(element, Globals.XsiPrefix, Globals.XsiTypeLocalName, Globals.SchemaInstanceNamespace, DataContractName, DataContractNamespace); if (ClrTypeName != null) element.AddAttribute(Globals.SerPrefix, Globals.SerializationNamespace, Globals.ClrTypeLocalName, ClrTypeName); if (ClrAssemblyName != null) element.AddAttribute(Globals.SerPrefix, Globals.SerializationNamespace, Globals.ClrAssemblyLocalName, ClrAssemblyName); } public virtual void Clear() { // dataContractName not cleared because it is used when re-serializing from unknown data clrTypeName = clrAssemblyName = null; } internal void AddQualifiedNameAttribute(ElementData element, string elementPrefix, string elementName, string elementNs, string valueName, string valueNs) { string prefix = ExtensionDataReader.GetPrefix(valueNs); element.AddAttribute(elementPrefix, elementNs, elementName, String.Format(CultureInfo.InvariantCulture, "{0}:{1}", prefix, valueName)); bool prefixDeclaredOnElement = false; if (element.attributes != null) { for (int i = 0; i < element.attributes.Length; i++) { AttributeData attribute = element.attributes[i]; if (attribute != null && attribute.prefix == Globals.XmlnsPrefix && attribute.localName == prefix) { prefixDeclaredOnElement = true; break; } } } if (!prefixDeclaredOnElement) element.AddAttribute(Globals.XmlnsPrefix, Globals.XmlnsNamespace, prefix, valueNs); } } internal class ClassDataNode : DataNode
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextSpanModifier.cs
- StronglyTypedResourceBuilder.cs
- SiteOfOriginPart.cs
- ControlUtil.cs
- ExtensionDataObject.cs
- LocationUpdates.cs
- ElementNotEnabledException.cs
- DesignerUtils.cs
- WindowsTreeView.cs
- FlatButtonAppearance.cs
- CmsInterop.cs
- CommandPlan.cs
- PeerNameRecordCollection.cs
- ExpressionVisitorHelpers.cs
- SequenceNumber.cs
- SqlFacetAttribute.cs
- IsolationInterop.cs
- DataGridViewCellStyleChangedEventArgs.cs
- CopyAttributesAction.cs
- remotingproxy.cs
- DesignerWidgets.cs
- QualifiedCellIdBoolean.cs
- Utils.cs
- AnnotationMap.cs
- RegisteredScript.cs
- AnimatedTypeHelpers.cs
- TokenBasedSetEnumerator.cs
- ToolStripTextBox.cs
- sqlser.cs
- ProviderCommandInfoUtils.cs
- Size.cs
- RuleSettingsCollection.cs
- FormViewDeleteEventArgs.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- Size3D.cs
- RealizationDrawingContextWalker.cs
- BasePattern.cs
- RenderDataDrawingContext.cs
- PriorityRange.cs
- GroupDescription.cs
- XmlDataSourceView.cs
- ConfigsHelper.cs
- CodeIdentifier.cs
- QueryActivatableWorkflowsCommand.cs
- BaseConfigurationRecord.cs
- PrintingPermissionAttribute.cs
- TypeUsage.cs
- SynchronizationHandlesCodeDomSerializer.cs
- TextRangeEditLists.cs
- WebResourceUtil.cs
- UserNameSecurityTokenAuthenticator.cs
- TreeWalker.cs
- SearchForVirtualItemEventArgs.cs
- MarshalDirectiveException.cs
- DefaultWorkflowTransactionService.cs
- XNodeValidator.cs
- RawStylusInputReport.cs
- AttributeSetAction.cs
- StatusInfoItem.cs
- HttpRuntimeSection.cs
- BamlRecordWriter.cs
- IpcChannelHelper.cs
- RSAProtectedConfigurationProvider.cs
- SpeakInfo.cs
- PixelFormatConverter.cs
- Transform3D.cs
- BuildProviderAppliesToAttribute.cs
- ForeignConstraint.cs
- PreloadHost.cs
- XmlSchemaNotation.cs
- JavascriptCallbackMessageInspector.cs
- ToolboxItemAttribute.cs
- BitmapEffectGeneralTransform.cs
- ExtractedStateEntry.cs
- BinaryObjectInfo.cs
- ComboBoxDesigner.cs
- OracleConnectionFactory.cs
- AttributeData.cs
- XmlDocumentFragment.cs
- ScriptComponentDescriptor.cs
- DataKeyArray.cs
- SplineQuaternionKeyFrame.cs
- ManifestResourceInfo.cs
- TypeNameParser.cs
- GifBitmapEncoder.cs
- X509Certificate2.cs
- QilParameter.cs
- IgnoreSection.cs
- _ListenerAsyncResult.cs
- EntryWrittenEventArgs.cs
- ProfilePropertySettings.cs
- TextureBrush.cs
- Stack.cs
- StringConcat.cs
- DataGridState.cs
- NativeActivityAbortContext.cs
- AnnotationComponentChooser.cs
- UrlAuthFailedErrorFormatter.cs
- QueueAccessMode.cs
- ColorPalette.cs