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
- RuntimeHelpers.cs
- SoapIgnoreAttribute.cs
- RTLAwareMessageBox.cs
- LayoutUtils.cs
- TypeValidationEventArgs.cs
- RevocationPoint.cs
- BaseUriHelper.cs
- VersionedStreamOwner.cs
- MessageQueueInstaller.cs
- PaintEvent.cs
- ListViewDeletedEventArgs.cs
- WindowsFormsHostAutomationPeer.cs
- X509Extension.cs
- CallSiteBinder.cs
- DoubleLink.cs
- IdleTimeoutMonitor.cs
- AppearanceEditorPart.cs
- InstanceNotReadyException.cs
- StringArrayConverter.cs
- TaskFileService.cs
- StatusBar.cs
- AspNetCompatibilityRequirementsMode.cs
- TreeViewEvent.cs
- AssociationSet.cs
- ListParagraph.cs
- InstanceNotReadyException.cs
- FragmentQueryKB.cs
- PriorityItem.cs
- ToolStripItemClickedEventArgs.cs
- Logging.cs
- SmtpException.cs
- IPGlobalProperties.cs
- BitmapPalette.cs
- FormsAuthenticationCredentials.cs
- EllipseGeometry.cs
- ListViewTableRow.cs
- SimpleWebHandlerParser.cs
- DataProtectionSecurityStateEncoder.cs
- xsdvalidator.cs
- StaticFileHandler.cs
- LinkButton.cs
- StateMachine.cs
- IsolatedStorageFileStream.cs
- DataGridRow.cs
- GridItemPattern.cs
- SQLRoleProvider.cs
- CmsInterop.cs
- CommentEmitter.cs
- BinaryConverter.cs
- DataGridViewCellValueEventArgs.cs
- RegionIterator.cs
- Style.cs
- DataGridViewSelectedRowCollection.cs
- PrivateFontCollection.cs
- WorkflowApplicationUnloadedException.cs
- GridViewRow.cs
- HtmlWindowCollection.cs
- _HeaderInfoTable.cs
- SizeLimitedCache.cs
- EncoderParameters.cs
- ConstrainedDataObject.cs
- HtmlFormAdapter.cs
- TimelineCollection.cs
- StylusButtonCollection.cs
- BaseValidator.cs
- IPAddress.cs
- UserControl.cs
- EncodingInfo.cs
- SQLDateTimeStorage.cs
- ConfigurationStrings.cs
- Style.cs
- XmlWrappingWriter.cs
- HttpWriter.cs
- sqlstateclientmanager.cs
- ControllableStoryboardAction.cs
- RoleManagerModule.cs
- ConvertersCollection.cs
- SynchronizingStream.cs
- PropertyDescriptorCollection.cs
- XamlSerializerUtil.cs
- FontResourceCache.cs
- CompModSwitches.cs
- SRGSCompiler.cs
- bindurihelper.cs
- XamlFigureLengthSerializer.cs
- ClassicBorderDecorator.cs
- WebPartConnectVerb.cs
- UseLicense.cs
- WorkflowOwnershipException.cs
- RepeaterCommandEventArgs.cs
- UserUseLicenseDictionaryLoader.cs
- EncoderParameters.cs
- Expression.cs
- TableCell.cs
- ContourSegment.cs
- InkSerializer.cs
- CapabilitiesPattern.cs
- DebugTraceHelper.cs
- ImageListDesigner.cs
- ComNativeDescriptor.cs