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
- MessagePropertyDescription.cs
- TemplatedMailWebEventProvider.cs
- MouseOverProperty.cs
- IndicFontClient.cs
- EncoderParameter.cs
- DataListAutoFormat.cs
- WrappingXamlSchemaContext.cs
- _TransmitFileOverlappedAsyncResult.cs
- PTProvider.cs
- SafeHandles.cs
- Model3D.cs
- CharEntityEncoderFallback.cs
- CompositionDesigner.cs
- TypedReference.cs
- SqlAliaser.cs
- MachineKey.cs
- PatternMatchRules.cs
- SqlClientMetaDataCollectionNames.cs
- DocumentSequenceHighlightLayer.cs
- StretchValidation.cs
- PermissionToken.cs
- InternalControlCollection.cs
- ConditionalWeakTable.cs
- ForeignConstraint.cs
- GZipDecoder.cs
- DocumentGrid.cs
- HostAdapter.cs
- StorageScalarPropertyMapping.cs
- RuleInfoComparer.cs
- DrawTreeNodeEventArgs.cs
- WebSysDefaultValueAttribute.cs
- basenumberconverter.cs
- TimeoutHelper.cs
- EntityStoreSchemaFilterEntry.cs
- FieldNameLookup.cs
- PageSetupDialog.cs
- MetaModel.cs
- GenericPrincipal.cs
- RelatedView.cs
- Latin1Encoding.cs
- Latin1Encoding.cs
- ObjectReferenceStack.cs
- BlockingCollection.cs
- DeviceOverridableAttribute.cs
- DeviceContexts.cs
- WebControlParameterProxy.cs
- HtmlInputSubmit.cs
- HwndMouseInputProvider.cs
- SqlNotificationRequest.cs
- LinkLabel.cs
- translator.cs
- DESCryptoServiceProvider.cs
- BufferBuilder.cs
- XNodeValidator.cs
- SingleBodyParameterMessageFormatter.cs
- WebFaultClientMessageInspector.cs
- CultureInfo.cs
- ProxyWebPartManager.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- XMLSyntaxException.cs
- Bidi.cs
- ListenerElementsCollection.cs
- SapiGrammar.cs
- TimeSpan.cs
- RegexCapture.cs
- _FixedSizeReader.cs
- NativeMethods.cs
- NativeMethods.cs
- XhtmlTextWriter.cs
- WebPartDisplayModeEventArgs.cs
- CompModHelpers.cs
- cache.cs
- ViewStateModeByIdAttribute.cs
- AlphabeticalEnumConverter.cs
- TemplateControlBuildProvider.cs
- ReadWriteObjectLock.cs
- Rectangle.cs
- EventHandlerList.cs
- _LazyAsyncResult.cs
- FixedSOMPageElement.cs
- NullableFloatSumAggregationOperator.cs
- SqlStream.cs
- EnumMemberAttribute.cs
- FileDialog.cs
- Transactions.cs
- ScalarConstant.cs
- DispatcherOperation.cs
- Stack.cs
- GridEntry.cs
- HelpExampleGenerator.cs
- CompilerCollection.cs
- Pens.cs
- EventManager.cs
- MultiViewDesigner.cs
- ListManagerBindingsCollection.cs
- FtpCachePolicyElement.cs
- ELinqQueryState.cs
- Attribute.cs
- EventListenerClientSide.cs
- AssemblyBuilder.cs