Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / Json / JsonEnumDataContract.cs / 1305376 / JsonEnumDataContract.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Runtime.Serialization.Json { using System.Xml; using System.Security; class JsonEnumDataContract : JsonDataContract { [Fx.Tag.SecurityNote(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; [Fx.Tag.SecurityNote(Critical = "Initializes SecurityCritical field 'helper'.", Safe = "Doesn't leak anything.")] [SecuritySafeCritical] public JsonEnumDataContract(EnumDataContract traditionalDataContract) : base(new JsonEnumDataContractCriticalHelper(traditionalDataContract)) { this.helper = base.Helper as JsonEnumDataContractCriticalHelper; } public bool IsULong { [Fx.Tag.SecurityNote(Critical = "Fetches the critical IsULong property.", Safe = "IsULong only needs to be protected for write.")] [SecuritySafeCritical] 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)); } } [Fx.Tag.SecurityNote(Critical = "Holds all state used for (de)serializing types." + "Since the data is cached statically, we lock down access to it.")] #pragma warning disable 618 // have not moved to the v4 security model yet [SecurityCritical(SecurityCriticalScope.Everything)] #pragma warning restore 618 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BitmapEffectInputData.cs
- TextParaClient.cs
- Rect3DValueSerializer.cs
- ZoomingMessageFilter.cs
- SQLChars.cs
- IsolatedStorageFilePermission.cs
- CompositeControl.cs
- ListComponentEditor.cs
- MetadataSource.cs
- METAHEADER.cs
- SystemIcmpV4Statistics.cs
- __Filters.cs
- ReadOnlyTernaryTree.cs
- DeviceContext.cs
- StreamUpgradeBindingElement.cs
- RadioButtonAutomationPeer.cs
- CheckBox.cs
- GroupJoinQueryOperator.cs
- ManagementEventArgs.cs
- GridItemCollection.cs
- SoapSchemaMember.cs
- FontUnitConverter.cs
- TableLayoutCellPaintEventArgs.cs
- DrawingAttributesDefaultValueFactory.cs
- NamespaceTable.cs
- Padding.cs
- DataKeyCollection.cs
- InsufficientMemoryException.cs
- MbpInfo.cs
- PersonalizationStateQuery.cs
- ContainsSearchOperator.cs
- TabletCollection.cs
- BrushValueSerializer.cs
- ListViewHitTestInfo.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- SemanticKeyElement.cs
- Utils.cs
- WhitespaceRule.cs
- WebPartEditorOkVerb.cs
- Stroke.cs
- MenuItemCollection.cs
- NavigationFailedEventArgs.cs
- DependencyPropertyConverter.cs
- PageCatalogPart.cs
- HandoffBehavior.cs
- ListControlActionList.cs
- BitmapEncoder.cs
- AnnotationResourceCollection.cs
- PluralizationServiceUtil.cs
- BitmapPalettes.cs
- PolicyStatement.cs
- OdbcException.cs
- LifetimeMonitor.cs
- PageContent.cs
- VariableReference.cs
- XmlQueryRuntime.cs
- Random.cs
- ProgressBarAutomationPeer.cs
- FramingDecoders.cs
- Vector.cs
- DynamicDataResources.Designer.cs
- JoinGraph.cs
- RtfControls.cs
- MetaColumn.cs
- XPathNodeIterator.cs
- CodeDirectionExpression.cs
- Scheduler.cs
- InputProviderSite.cs
- DataGridItemCollection.cs
- ReverseQueryOperator.cs
- SplitterCancelEvent.cs
- ObjectItemCollection.cs
- HasCopySemanticsAttribute.cs
- UnsettableComboBox.cs
- TableItemPattern.cs
- SafeHandles.cs
- Tokenizer.cs
- DesignerCalendarAdapter.cs
- SystemColors.cs
- StringCollection.cs
- ConnectionStringSettings.cs
- DataBoundControlParameterTarget.cs
- OleDbInfoMessageEvent.cs
- DispatcherProcessingDisabled.cs
- AnnotationComponentManager.cs
- ObjectDataSourceFilteringEventArgs.cs
- DisableDpiAwarenessAttribute.cs
- TreeIterators.cs
- HostedImpersonationContext.cs
- ToolZone.cs
- StackOverflowException.cs
- WebPartsSection.cs
- DataGridToolTip.cs
- TemplateKey.cs
- MultidimensionalArrayItemReference.cs
- _AutoWebProxyScriptWrapper.cs
- SecurityToken.cs
- WebPartDesigner.cs
- DependencyPropertyValueSerializer.cs
- SourceElementsCollection.cs