Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / Json / JsonXmlDataContract.cs / 1305376 / JsonXmlDataContract.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Runtime.Serialization.Json { using System.Xml; using System.Collections.Generic; using System.IO; using System.Text; class JsonXmlDataContract : JsonDataContract { public JsonXmlDataContract(XmlDataContract traditionalXmlDataContract) : base(traditionalXmlDataContract) { } public override object ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) { string xmlContent = jsonReader.ReadElementContentAsString(); DataContractSerializer dataContractSerializer = new DataContractSerializer(TraditionalDataContract.UnderlyingType, GetKnownTypesFromContext(context, (context == null) ? null : context.SerializerKnownTypeList), 1, false, false, null); // maxItemsInObjectGraph // ignoreExtensionDataObject // preserveObjectReferences // dataContractSurrogate MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlContent)); object xmlValue; XmlDictionaryReaderQuotas quotas = ((JsonReaderDelegator) jsonReader).ReaderQuotas; if (quotas == null) { xmlValue = dataContractSerializer.ReadObject(memoryStream); } else { xmlValue = dataContractSerializer.ReadObject(XmlDictionaryReader.CreateTextReader(memoryStream, quotas)); } if (context != null) { context.AddNewObject(xmlValue); } return xmlValue; } public override void WriteJsonValueCore(XmlWriterDelegator jsonWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) { DataContractSerializer dataContractSerializer = new DataContractSerializer(Type.GetTypeFromHandle(declaredTypeHandle), GetKnownTypesFromContext(context, (context == null) ? null : context.SerializerKnownTypeList), 1, false, false, null); // maxItemsInObjectGraph // ignoreExtensionDataObject // preserveObjectReferences // dataContractSurrogate MemoryStream memoryStream = new MemoryStream(); dataContractSerializer.WriteObject(memoryStream, obj); memoryStream.Position = 0; string serialized = new StreamReader(memoryStream).ReadToEnd(); jsonWriter.WriteString(serialized); } ListGetKnownTypesFromContext(XmlObjectSerializerContext context, IList serializerKnownTypeList) { List knownTypesList = new List (); if (context != null) { List stableNames = new List (); Dictionary [] entries = context.scopedKnownTypes.dataContractDictionaries; if (entries != null) { for (int i = 0; i < entries.Length; i++) { Dictionary entry = entries[i]; if (entry != null) { foreach (KeyValuePair pair in entry) { if (!stableNames.Contains(pair.Key)) { stableNames.Add(pair.Key); knownTypesList.Add(pair.Value.UnderlyingType); } } } } } if (serializerKnownTypeList != null) { knownTypesList.AddRange(serializerKnownTypeList); } } return knownTypesList; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ImpersonateTokenRef.cs
- MimeFormatExtensions.cs
- DataDocumentXPathNavigator.cs
- UrlMappingCollection.cs
- ReplacementText.cs
- UnknownBitmapDecoder.cs
- MatrixTransform.cs
- AssemblyContextControlItem.cs
- HealthMonitoringSectionHelper.cs
- ColumnWidthChangedEvent.cs
- TaskHelper.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- CacheMemory.cs
- PlatformCulture.cs
- ToolboxItemAttribute.cs
- WindowsStatusBar.cs
- Configuration.cs
- RectangleConverter.cs
- ClockGroup.cs
- RichTextBox.cs
- COM2ICategorizePropertiesHandler.cs
- OutputScope.cs
- SystemDiagnosticsSection.cs
- SymbolEqualComparer.cs
- GetIndexBinder.cs
- SID.cs
- XPathException.cs
- DecoderFallback.cs
- DocumentAutomationPeer.cs
- ResolveMatchesMessage11.cs
- FormsAuthenticationUser.cs
- AdornerPresentationContext.cs
- XamlValidatingReader.cs
- Scene3D.cs
- Literal.cs
- DataGridViewColumnTypePicker.cs
- TableRow.cs
- Dictionary.cs
- BitmapEffectCollection.cs
- PartitionedStreamMerger.cs
- ResXResourceReader.cs
- RecordManager.cs
- SizeLimitedCache.cs
- Psha1DerivedKeyGenerator.cs
- SqlDuplicator.cs
- SoapClientProtocol.cs
- SqlFileStream.cs
- FrameworkElement.cs
- GeometryModel3D.cs
- CfgSemanticTag.cs
- ErrorEventArgs.cs
- AutomationElement.cs
- TileBrush.cs
- OdbcErrorCollection.cs
- ProtectedProviderSettings.cs
- ParameterCollection.cs
- InvalidDataException.cs
- EntityDataSourceViewSchema.cs
- UnitySerializationHolder.cs
- OleDbRowUpdatedEvent.cs
- SystemParameters.cs
- OracleConnectionFactory.cs
- SHA256.cs
- TypeDescriptor.cs
- PropertyAccessVisitor.cs
- SessionStateItemCollection.cs
- HttpClientCertificate.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- EnumBuilder.cs
- SqlBooleanizer.cs
- MessageAction.cs
- SimpleBitVector32.cs
- PathParser.cs
- ValueTypeFixupInfo.cs
- OrderedEnumerableRowCollection.cs
- VideoDrawing.cs
- FileUpload.cs
- GeometryGroup.cs
- COM2ComponentEditor.cs
- SchemaMerger.cs
- MetaTable.cs
- ColumnHeader.cs
- RetriableClipboard.cs
- Win32SafeHandles.cs
- FrameworkElementAutomationPeer.cs
- BufferedGraphicsManager.cs
- RecipientInfo.cs
- ConfigurationValidatorBase.cs
- SQLInt64Storage.cs
- CqlGenerator.cs
- AddInServer.cs
- AssemblyBuilderData.cs
- Message.cs
- ScalarOps.cs
- ColumnCollection.cs
- GridViewDeletedEventArgs.cs
- RtfNavigator.cs
- TableLayoutCellPaintEventArgs.cs
- XmlReturnWriter.cs
- AssemblyAttributesGoHere.cs