Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Runtime / Serialization / SerializationObjectManager.cs / 1 / SerializationObjectManager.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SerializationObjectManager ** ** ** Purpose: Encapsulates serialization time management, mainly invoking serialization events ** ** ============================================================*/ namespace System.Runtime.Serialization { using System; using System.Collections; using System.Runtime.Serialization; using System.Security.Permissions; public sealed class SerializationObjectManager{ private Hashtable m_objectSeenTable = new Hashtable(); // Table to keep track of objects [OnSerializing] has been called on private SerializationEventHandler m_onSerializedHandler; private StreamingContext m_context; public SerializationObjectManager(StreamingContext context) { m_context = context; m_objectSeenTable = new Hashtable(); } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)] public void RegisterObject(Object obj) { // Invoke OnSerializing for this object SerializationEvents cache = SerializationEventsCache.GetSerializationEventsForType(obj.GetType()); // Check to make sure type has serializing events if (cache.HasOnSerializingEvents) { // Check to see if we have invoked the events on the object if (m_objectSeenTable[obj] == null) { m_objectSeenTable[obj] = true; // Invoke the events cache.InvokeOnSerializing(obj, m_context); // Register for OnSerialized event AddOnSerialized(obj); } } } public void RaiseOnSerializedEvent() { if (m_onSerializedHandler != null) { m_onSerializedHandler(m_context); } } private void AddOnSerialized(Object obj) { SerializationEvents cache = SerializationEventsCache.GetSerializationEventsForType(obj.GetType()); m_onSerializedHandler = cache.AddOnSerialized(obj, m_onSerializedHandler); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SerializationObjectManager ** ** ** Purpose: Encapsulates serialization time management, mainly invoking serialization events ** ** ============================================================*/ namespace System.Runtime.Serialization { using System; using System.Collections; using System.Runtime.Serialization; using System.Security.Permissions; public sealed class SerializationObjectManager{ private Hashtable m_objectSeenTable = new Hashtable(); // Table to keep track of objects [OnSerializing] has been called on private SerializationEventHandler m_onSerializedHandler; private StreamingContext m_context; public SerializationObjectManager(StreamingContext context) { m_context = context; m_objectSeenTable = new Hashtable(); } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)] public void RegisterObject(Object obj) { // Invoke OnSerializing for this object SerializationEvents cache = SerializationEventsCache.GetSerializationEventsForType(obj.GetType()); // Check to make sure type has serializing events if (cache.HasOnSerializingEvents) { // Check to see if we have invoked the events on the object if (m_objectSeenTable[obj] == null) { m_objectSeenTable[obj] = true; // Invoke the events cache.InvokeOnSerializing(obj, m_context); // Register for OnSerialized event AddOnSerialized(obj); } } } public void RaiseOnSerializedEvent() { if (m_onSerializedHandler != null) { m_onSerializedHandler(m_context); } } private void AddOnSerialized(Object obj) { SerializationEvents cache = SerializationEventsCache.GetSerializationEventsForType(obj.GetType()); m_onSerializedHandler = cache.AddOnSerialized(obj, m_onSerializedHandler); } } } // 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
- ScrollBar.cs
- PriorityBindingExpression.cs
- Mutex.cs
- InvokePatternIdentifiers.cs
- Formatter.cs
- DrawingCollection.cs
- XmlSiteMapProvider.cs
- OutOfProcStateClientManager.cs
- SpecularMaterial.cs
- CodeExpressionCollection.cs
- CollectionsUtil.cs
- XmlSchemaSimpleTypeRestriction.cs
- DataStreamFromComStream.cs
- ComplexBindingPropertiesAttribute.cs
- TextProperties.cs
- connectionpool.cs
- WebPart.cs
- Enlistment.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- SqlPersonalizationProvider.cs
- SolidBrush.cs
- CachedFontFamily.cs
- UrlMappingsModule.cs
- RMPublishingDialog.cs
- ObjectTypeMapping.cs
- WebPartTransformer.cs
- AccessDataSourceView.cs
- AnnotationObservableCollection.cs
- JsonQNameDataContract.cs
- ToolboxItemCollection.cs
- UnhandledExceptionEventArgs.cs
- ObjectComplexPropertyMapping.cs
- ViewRendering.cs
- ResolveNameEventArgs.cs
- RectAnimationUsingKeyFrames.cs
- DriveInfo.cs
- BaseDataBoundControl.cs
- StylusPlugInCollection.cs
- MailMessageEventArgs.cs
- XmlnsPrefixAttribute.cs
- __Error.cs
- UIElement.cs
- Panel.cs
- NotCondition.cs
- MenuAdapter.cs
- ListItemConverter.cs
- XPathMessageContext.cs
- StringDictionary.cs
- TreeNodeBinding.cs
- DynamicObject.cs
- CommentAction.cs
- SoapCommonClasses.cs
- ColumnReorderedEventArgs.cs
- EnumValAlphaComparer.cs
- SiteMapNode.cs
- EventDescriptor.cs
- HttpCookieCollection.cs
- LastQueryOperator.cs
- TypeSystemHelpers.cs
- TabItem.cs
- ShellProvider.cs
- DBSqlParserColumnCollection.cs
- RegexFCD.cs
- TransformCollection.cs
- Perspective.cs
- XmlSchema.cs
- GridViewUpdateEventArgs.cs
- PolyLineSegment.cs
- CommonProperties.cs
- QilReference.cs
- ImageIndexConverter.cs
- CapabilitiesSection.cs
- Help.cs
- WindowsUpDown.cs
- FileSystemInfo.cs
- SqlConnectionString.cs
- TextTreeFixupNode.cs
- KeySplineConverter.cs
- TextDecoration.cs
- ParseElementCollection.cs
- ISessionStateStore.cs
- AppendHelper.cs
- Line.cs
- ProfilePropertySettings.cs
- XmlSchemaSimpleContentExtension.cs
- PathGradientBrush.cs
- AdornerDecorator.cs
- PointCollection.cs
- FormViewPageEventArgs.cs
- InputScopeNameConverter.cs
- SpotLight.cs
- DataGridHelper.cs
- CollectionEditVerbManager.cs
- TraceEventCache.cs
- SqlAliaser.cs
- XmlParserContext.cs
- LicenseProviderAttribute.cs
- HWStack.cs
- TransactionScopeDesigner.cs
- LinearGradientBrush.cs