Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / Runtime / Serialization / Json / JsonEnumDataContract.cs / 1 / JsonEnumDataContract.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Runtime.Serialization.Json { using System.Xml; using System.Security; class JsonEnumDataContract : JsonDataContract { //// Critical - holds instance of CriticalHelper which keeps state that is cached statically for serialization. // Static fields are marked SecurityCritical or readonly to prevent // data from being modified or leaked to other components in appdomain. // [SecurityCritical] JsonEnumDataContractCriticalHelper helper; //// Critical - initializes SecurityCritical field 'helper' // Safe - doesn't leak anything // [SecurityCritical, SecurityTreatAsSafe] public JsonEnumDataContract(EnumDataContract traditionalDataContract) : base(new JsonEnumDataContractCriticalHelper(traditionalDataContract)) { this.helper = base.Helper as JsonEnumDataContractCriticalHelper; } public bool IsULong { //// Critical - fetches the critical IsULong property // Safe - IsULong only needs to be protected for write // [SecurityCritical, SecurityTreatAsSafe] get { return this.helper.IsULong; } } public override object ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) { object enumValue; if (IsULong) { enumValue = Enum.ToObject(TraditionalDataContract.UnderlyingType, jsonReader.ReadElementContentAsUnsignedLong()); } else { enumValue = Enum.ToObject(TraditionalDataContract.UnderlyingType, jsonReader.ReadElementContentAsLong()); } if (context != null) { context.AddNewObject(enumValue); } return enumValue; } public override void WriteJsonValueCore(XmlWriterDelegator jsonWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) { if (IsULong) { jsonWriter.WriteUnsignedLong(((IConvertible) obj).ToUInt64(null)); } else { jsonWriter.WriteLong(((IConvertible) obj).ToInt64(null)); } } //// Critical - holds all state used for (de)serializing types. // since the data is cached statically, we lock down access to it. // [SecurityCritical(SecurityCriticalScope.Everything)] class JsonEnumDataContractCriticalHelper : JsonDataContractCriticalHelper { bool isULong; public JsonEnumDataContractCriticalHelper(EnumDataContract traditionalEnumDataContract) : base(traditionalEnumDataContract) { isULong = traditionalEnumDataContract.IsULong; } public bool IsULong { get { return this.isULong; } } } } } // 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
- PhysicalOps.cs
- _NetworkingPerfCounters.cs
- Point3DConverter.cs
- DivideByZeroException.cs
- XsdBuilder.cs
- Rotation3D.cs
- dbdatarecord.cs
- wgx_render.cs
- VisualStyleRenderer.cs
- PageCodeDomTreeGenerator.cs
- DataGridGeneralPage.cs
- ComponentChangedEvent.cs
- DataServiceQuery.cs
- XamlFilter.cs
- CodeStatementCollection.cs
- BindingMemberInfo.cs
- Attachment.cs
- NamespaceMapping.cs
- RtType.cs
- SqlCaseSimplifier.cs
- OledbConnectionStringbuilder.cs
- TypeDelegator.cs
- SqlRemoveConstantOrderBy.cs
- SQLBinary.cs
- SQLUtility.cs
- brushes.cs
- ToolStripOverflow.cs
- SourceLineInfo.cs
- ReflectTypeDescriptionProvider.cs
- Control.cs
- UpWmlMobileTextWriter.cs
- FixedSchema.cs
- Camera.cs
- ToolboxComponentsCreatingEventArgs.cs
- LayoutExceptionEventArgs.cs
- RotationValidation.cs
- ProjectedSlot.cs
- PrintPreviewGraphics.cs
- _TLSstream.cs
- PeerInputChannel.cs
- FirstMatchCodeGroup.cs
- CustomSignedXml.cs
- SamlAudienceRestrictionCondition.cs
- SR.cs
- Queue.cs
- ObjectDataSourceMethodEditor.cs
- TextServicesManager.cs
- LogExtent.cs
- ProfessionalColorTable.cs
- Win32Exception.cs
- SessionEndedEventArgs.cs
- ExtensionDataObject.cs
- SoapCodeExporter.cs
- StorageBasedPackageProperties.cs
- DesigntimeLicenseContext.cs
- AstNode.cs
- TemplateControlCodeDomTreeGenerator.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ConfigXmlSignificantWhitespace.cs
- ImageMapEventArgs.cs
- ContextProperty.cs
- DataServiceBuildProvider.cs
- LoginCancelEventArgs.cs
- ProgressBar.cs
- ConfigurationValidatorBase.cs
- DateTimeOffsetAdapter.cs
- SystemIPAddressInformation.cs
- AsyncOperationLifetimeManager.cs
- BuildProvider.cs
- TypeLibConverter.cs
- DbParameterHelper.cs
- Object.cs
- WorkflowMarkupSerializerMapping.cs
- RubberbandSelector.cs
- GB18030Encoding.cs
- ClientSettingsStore.cs
- WeakReferenceList.cs
- Math.cs
- ApplicationSecurityManager.cs
- COM2IDispatchConverter.cs
- KnownBoxes.cs
- XamlVector3DCollectionSerializer.cs
- XmlSchemaRedefine.cs
- HorizontalAlignConverter.cs
- RowsCopiedEventArgs.cs
- IRCollection.cs
- KeyedHashAlgorithm.cs
- WpfXamlMember.cs
- DeploymentExceptionMapper.cs
- IconBitmapDecoder.cs
- NativeCompoundFileAPIs.cs
- JavaScriptSerializer.cs
- XmlAttributes.cs
- SortAction.cs
- ConfigurationValue.cs
- HttpCachePolicyWrapper.cs
- GetBrowserTokenRequest.cs
- ExitEventArgs.cs
- KnownBoxes.cs
- BitmapEffectDrawingContextState.cs