Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / Runtime / Serialization / Json / JsonWriterDelegator.cs / 1 / JsonWriterDelegator.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Runtime.Serialization.Json { using System.Xml; using System.Globalization; using System.ServiceModel; #if USE_REFEMIT public class JsonWriterDelegator : XmlWriterDelegator #else internal class JsonWriterDelegator : XmlWriterDelegator #endif { public JsonWriterDelegator(XmlWriter writer) : base(writer) { } internal override void WriteChar(char value) { WriteString(XmlConvert.ToString(value)); } internal override void WriteBase64(byte[] bytes) { if (bytes == null) { return; } ByteArrayHelperWithString.Instance.WriteArray(Writer, bytes, 0, bytes.Length); } internal override void WriteQName(XmlQualifiedName value) { if (value != XmlQualifiedName.Empty) { writer.WriteString(value.Name); writer.WriteString(JsonGlobals.NameValueSeparatorString); writer.WriteString(value.Namespace); } } internal override void WriteUnsignedLong(ulong value) { WriteDecimal((decimal)value); } internal override void WriteDecimal(decimal value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteDecimal(value); } internal override void WriteDouble(double value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteDouble(value); } internal override void WriteFloat(float value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteFloat(value); } internal override void WriteLong(long value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteLong(value); } internal override void WriteSignedByte(sbyte value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteSignedByte(value); } internal override void WriteUnsignedInt(uint value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteUnsignedInt(value); } internal override void WriteUnsignedShort(ushort value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteUnsignedShort(value); } internal override void WriteUnsignedByte(byte value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteUnsignedByte(value); } internal override void WriteShort(short value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteShort(value); } internal override void WriteBoolean(bool value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.booleanString); base.WriteBoolean(value); } internal override void WriteInt(int value) { writer.WriteAttributeString(JsonGlobals.typeString, JsonGlobals.numberString); base.WriteInt(value); } #if USE_REFEMIT public void WriteJsonBooleanArray(bool[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonBooleanArray(bool[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteBoolean(value[i], itemName, itemNamespace); } } #if USE_REFEMIT public void WriteJsonDateTimeArray(DateTime[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonDateTimeArray(DateTime[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteDateTime(value[i], itemName, itemNamespace); } } #if USE_REFEMIT public void WriteJsonDecimalArray(decimal[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonDecimalArray(decimal[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteDecimal(value[i], itemName, itemNamespace); } } #if USE_REFEMIT public void WriteJsonInt32Array(int[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonInt32Array(int[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteInt(value[i], itemName, itemNamespace); } } #if USE_REFEMIT public void WriteJsonInt64Array(long[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonInt64Array(long[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteLong(value[i], itemName, itemNamespace); } } internal override void WriteDateTime(DateTime value) { // ToUniversalTime() truncates dates to DateTime.MaxValue or DateTime.MinValue instead of throwing // This will break round-tripping of these dates (see bug 9690 in CSD Developer Framework) if (value.Kind != DateTimeKind.Utc) { long tickCount = value.Ticks - TimeZone.CurrentTimeZone.GetUtcOffset(value).Ticks; if ((tickCount > DateTime.MaxValue.Ticks) || (tickCount < DateTime.MinValue.Ticks)) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError( XmlObjectSerializer.CreateSerializationException(SR2.JsonDateTimeOutOfRange, new ArgumentOutOfRangeException("value"))); } } writer.WriteString(JsonGlobals.DateTimeStartGuardReader); writer.WriteValue((value.ToUniversalTime().Ticks - JsonGlobals.unixEpochTicks) / 10000); switch (value.Kind) { case DateTimeKind.Unspecified: case DateTimeKind.Local: // +"zzzz"; TimeSpan ts = TimeZone.CurrentTimeZone.GetUtcOffset(value.ToLocalTime()); if (ts.Ticks < 0) { writer.WriteString("-"); } else { writer.WriteString("+"); } int hours = Math.Abs(ts.Hours); writer.WriteString((hours < 10) ? "0" + hours : hours.ToString(CultureInfo.InvariantCulture)); int minutes = Math.Abs(ts.Minutes); writer.WriteString((minutes < 10) ? "0" + minutes : minutes.ToString(CultureInfo.InvariantCulture)); break; case DateTimeKind.Utc: break; } writer.WriteString(JsonGlobals.DateTimeEndGuardReader); } #if USE_REFEMIT public void WriteJsonSingleArray(float[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonSingleArray(float[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteFloat(value[i], itemName, itemNamespace); } } #if USE_REFEMIT public void WriteJsonDoubleArray(double[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #else internal void WriteJsonDoubleArray(double[] value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace) #endif { for (int i = 0; i < value.Length; i++) { WriteDouble(value[i], itemName, itemNamespace); } } } } // 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
- OleTxTransactionInfo.cs
- HttpInputStream.cs
- DesignTimeParseData.cs
- CodeExpressionStatement.cs
- DocumentViewerConstants.cs
- ToolStripPanelSelectionGlyph.cs
- EventDescriptor.cs
- SmtpSection.cs
- Menu.cs
- HtmlContainerControl.cs
- XmlAnyElementAttributes.cs
- OptimalBreakSession.cs
- ByteStorage.cs
- OpenTypeMethods.cs
- AnimatedTypeHelpers.cs
- DataGridViewSelectedRowCollection.cs
- FactoryId.cs
- DefaultValueConverter.cs
- TextElementCollectionHelper.cs
- TrackingServices.cs
- DesignTimeParseData.cs
- securestring.cs
- XmlSchemaGroupRef.cs
- CodeGroup.cs
- Transform.cs
- Behavior.cs
- ProgressBar.cs
- ParameterBuilder.cs
- NameValueConfigurationElement.cs
- NotFiniteNumberException.cs
- Blend.cs
- Verify.cs
- UnhandledExceptionEventArgs.cs
- ToolStripItemTextRenderEventArgs.cs
- GPPOINT.cs
- DateTimeFormatInfoScanner.cs
- FilterException.cs
- SpnegoTokenAuthenticator.cs
- BidOverLoads.cs
- SecUtil.cs
- CompiledIdentityConstraint.cs
- OrderPreservingPipeliningMergeHelper.cs
- RelationshipEndCollection.cs
- ObjectManager.cs
- XmlSchemaComplexContent.cs
- ListParagraph.cs
- DataGridAutoFormatDialog.cs
- AddInProcess.cs
- ReflectEventDescriptor.cs
- AccessControlList.cs
- securestring.cs
- WindowsRebar.cs
- ConsumerConnectionPoint.cs
- FlowLayoutSettings.cs
- NullReferenceException.cs
- ChildTable.cs
- FixedSOMTextRun.cs
- CachingHintValidation.cs
- HTMLTagNameToTypeMapper.cs
- RelationshipFixer.cs
- DirectoryRootQuery.cs
- SqlDuplicator.cs
- BitmapEffectDrawingContextWalker.cs
- TypeDescriptionProvider.cs
- CancellationToken.cs
- ProviderIncompatibleException.cs
- FileNameEditor.cs
- RelationshipConverter.cs
- AnimationException.cs
- ColumnWidthChangedEvent.cs
- WebPartDescription.cs
- ZoomPercentageConverter.cs
- XsltLoader.cs
- ScrollBar.cs
- SmiContextFactory.cs
- Native.cs
- IxmlLineInfo.cs
- RequestBringIntoViewEventArgs.cs
- TypeListConverter.cs
- ChtmlTextWriter.cs
- DataGridDetailsPresenterAutomationPeer.cs
- DataGrid.cs
- ExpressionBuilderCollection.cs
- HttpWebRequestElement.cs
- HierarchicalDataSourceControl.cs
- JsonServiceDocumentSerializer.cs
- SqlUnionizer.cs
- DynamicILGenerator.cs
- VariantWrapper.cs
- DateTimeFormatInfo.cs
- Empty.cs
- TemplatedWizardStep.cs
- StrongNameMembershipCondition.cs
- FormViewRow.cs
- ExpressionEditorAttribute.cs
- StringValueSerializer.cs
- XmlEventCache.cs
- BasicHttpBindingCollectionElement.cs
- HttpApplicationFactory.cs
- ColorIndependentAnimationStorage.cs