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
- AnnotationDocumentPaginator.cs
- FloatSumAggregationOperator.cs
- EdgeModeValidation.cs
- WebPartConnection.cs
- DropTarget.cs
- CallbackHandler.cs
- ServiceProviders.cs
- TextViewDesigner.cs
- ErrorHandler.cs
- ManipulationStartingEventArgs.cs
- Permission.cs
- NavigationWindowAutomationPeer.cs
- ToolTipService.cs
- DataGridState.cs
- AbsoluteQuery.cs
- precedingquery.cs
- UnmanagedMemoryStream.cs
- Expression.cs
- OleAutBinder.cs
- SymbolType.cs
- ImageFormatConverter.cs
- SimpleFileLog.cs
- GlyphShapingProperties.cs
- AnnotationMap.cs
- EmptyImpersonationContext.cs
- UnsafeNativeMethods.cs
- MethodImplAttribute.cs
- UInt32Converter.cs
- CrossSiteScriptingValidation.cs
- ApplicationSecurityManager.cs
- ScrollBar.cs
- StyleHelper.cs
- DataSourceExpression.cs
- ServiceHostingEnvironment.cs
- LocalBuilder.cs
- ReferencedType.cs
- CursorInteropHelper.cs
- PersonalizableAttribute.cs
- URL.cs
- NetTcpBindingElement.cs
- InvalidFilterCriteriaException.cs
- DataListItemCollection.cs
- DataViewSettingCollection.cs
- InlineObject.cs
- VerticalAlignConverter.cs
- DefaultAsyncDataDispatcher.cs
- TwoPhaseCommit.cs
- FileDialog.cs
- TypeRefElement.cs
- TextRange.cs
- SimpleWebHandlerParser.cs
- DynamicDiscoSearcher.cs
- HandlerFactoryWrapper.cs
- SchemaElementDecl.cs
- DictionarySectionHandler.cs
- UnknownBitmapDecoder.cs
- StickyNoteHelper.cs
- SharedTcpTransportManager.cs
- HttpCachePolicy.cs
- Hyperlink.cs
- StateDesigner.TransitionInfo.cs
- IntSecurity.cs
- FixedFindEngine.cs
- Ticks.cs
- BamlLocalizableResourceKey.cs
- TaskFileService.cs
- DiagnosticTrace.cs
- CheckPair.cs
- Link.cs
- ResponseStream.cs
- ViewStateModeByIdAttribute.cs
- EncryptedKeyIdentifierClause.cs
- ClientSideQueueItem.cs
- ScrollBar.cs
- UnionExpr.cs
- MachineKeySection.cs
- GenericAuthenticationEventArgs.cs
- TypedRowGenerator.cs
- ErrorFormatterPage.cs
- CallbackHandler.cs
- latinshape.cs
- InvokeWebService.cs
- HwndSubclass.cs
- SignedXml.cs
- IdentitySection.cs
- AdornerDecorator.cs
- EntityDesignerBuildProvider.cs
- GZipDecoder.cs
- AssemblyGen.cs
- ParsedRoute.cs
- AttachInfo.cs
- WizardForm.cs
- PreProcessor.cs
- QueryStringHandler.cs
- ListViewItemSelectionChangedEvent.cs
- XappLauncher.cs
- CodeLabeledStatement.cs
- CorrelationValidator.cs
- MobileContainerDesigner.cs
- ObjectItemCachedAssemblyLoader.cs