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
- StickyNote.cs
- XmlReaderDelegator.cs
- BitmapEffectInput.cs
- Track.cs
- ImageIndexConverter.cs
- SystemIPv4InterfaceProperties.cs
- CssStyleCollection.cs
- RIPEMD160Managed.cs
- EntityDataSourceContainerNameConverter.cs
- GridSplitterAutomationPeer.cs
- CollectionContainer.cs
- ArraySet.cs
- SerializationException.cs
- AbstractExpressions.cs
- ControlPropertyNameConverter.cs
- AliasGenerator.cs
- ParserStreamGeometryContext.cs
- ButtonStandardAdapter.cs
- IgnoreSection.cs
- ToolStripEditorManager.cs
- Label.cs
- XPathDescendantIterator.cs
- Clause.cs
- ObjRef.cs
- ListMarkerSourceInfo.cs
- AuthenticationException.cs
- NativeMethods.cs
- BufferModeSettings.cs
- FileDataSourceCache.cs
- QueryOutputWriter.cs
- AtomicFile.cs
- ImageField.cs
- BackStopAuthenticationModule.cs
- DesignTimeParseData.cs
- AuthorizationRule.cs
- IndexedEnumerable.cs
- DependentList.cs
- UserControlParser.cs
- FormViewInsertEventArgs.cs
- IpcChannel.cs
- XamlRtfConverter.cs
- FileFormatException.cs
- AdornerHitTestResult.cs
- ResourceDisplayNameAttribute.cs
- UnaryQueryOperator.cs
- HierarchicalDataTemplate.cs
- RootBuilder.cs
- CompressStream.cs
- TagMapInfo.cs
- SqlTopReducer.cs
- RootProfilePropertySettingsCollection.cs
- Brush.cs
- AdornerHitTestResult.cs
- EnumBuilder.cs
- TakeQueryOptionExpression.cs
- XhtmlTextWriter.cs
- EventRouteFactory.cs
- Brush.cs
- WrappedReader.cs
- Error.cs
- JsonQNameDataContract.cs
- ValidatingReaderNodeData.cs
- PersonalizationProvider.cs
- PropertyGridCommands.cs
- OracleBinary.cs
- SqlDataReaderSmi.cs
- ExpandableObjectConverter.cs
- SafeFileMapViewHandle.cs
- SQLBytes.cs
- _RequestCacheProtocol.cs
- XmlBoundElement.cs
- ExcludePathInfo.cs
- ScriptReferenceBase.cs
- XmlDictionary.cs
- ReaderWriterLockWrapper.cs
- AuthorizationSection.cs
- ErrorHandler.cs
- TypeConverters.cs
- XmlSchemaRedefine.cs
- PropertyMappingExceptionEventArgs.cs
- TemplateComponentConnector.cs
- DbCommandDefinition.cs
- System.Data.OracleClient_BID.cs
- BaseTreeIterator.cs
- RemoteWebConfigurationHost.cs
- SkipQueryOptionExpression.cs
- XamlClipboardData.cs
- SystemPens.cs
- OpCodes.cs
- StandardCommands.cs
- FixedSOMTableRow.cs
- SatelliteContractVersionAttribute.cs
- HTTPNotFoundHandler.cs
- HttpRuntimeSection.cs
- ImmutableCommunicationTimeouts.cs
- RayHitTestParameters.cs
- SingleTagSectionHandler.cs
- WindowsGraphics.cs
- ProxyHwnd.cs
- InkCanvas.cs