Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- XPathDocument.cs
- ReceiveActivityDesignerTheme.cs
- PropertyFilterAttribute.cs
- BrowsableAttribute.cs
- MimeWriter.cs
- RPIdentityRequirement.cs
- CookieParameter.cs
- EventDescriptor.cs
- SqlDataSourceStatusEventArgs.cs
- DecoratedNameAttribute.cs
- ZoneButton.cs
- HttpModuleAction.cs
- OdbcHandle.cs
- CounterCreationDataConverter.cs
- MergePropertyDescriptor.cs
- PathFigure.cs
- TemplateXamlTreeBuilder.cs
- ListView.cs
- GreenMethods.cs
- RootProfilePropertySettingsCollection.cs
- CursorConverter.cs
- DynamicMethod.cs
- RequestCacheValidator.cs
- XamlClipboardData.cs
- DataGridViewEditingControlShowingEventArgs.cs
- DataGridViewCellParsingEventArgs.cs
- counter.cs
- CheckBoxStandardAdapter.cs
- Pair.cs
- StateMachineHelpers.cs
- QilStrConcatenator.cs
- Compiler.cs
- EntityContainerRelationshipSetEnd.cs
- Win32.cs
- SafeArrayRankMismatchException.cs
- HotSpot.cs
- Socket.cs
- TimelineCollection.cs
- LinqDataSourceSelectEventArgs.cs
- TdsEnums.cs
- DataGridViewAccessibleObject.cs
- ReferenceService.cs
- MailMessage.cs
- TripleDESCryptoServiceProvider.cs
- GeneralTransform.cs
- _NativeSSPI.cs
- XmlSchemaComplexContent.cs
- WorkflowServiceInstance.cs
- DES.cs
- StringConverter.cs
- SqlConnectionString.cs
- DropShadowEffect.cs
- MultipartIdentifier.cs
- AttachmentCollection.cs
- HTMLTextWriter.cs
- MemberPath.cs
- TemplatedEditableDesignerRegion.cs
- XmlSchemaSimpleTypeList.cs
- OperatorExpressions.cs
- SelectionEditor.cs
- SerializationHelper.cs
- ImageInfo.cs
- VisualBasic.cs
- ListViewEditEventArgs.cs
- DefaultEventAttribute.cs
- ITreeGenerator.cs
- DebugView.cs
- BaseValidatorDesigner.cs
- PropertyValueEditor.cs
- XPathMultyIterator.cs
- FileIOPermission.cs
- FragmentQueryKB.cs
- MSG.cs
- PopOutPanel.cs
- RowUpdatingEventArgs.cs
- ResourceSet.cs
- RoleService.cs
- VisualStyleElement.cs
- EdmRelationshipRoleAttribute.cs
- WebPartUtil.cs
- BrowserCapabilitiesFactoryBase.cs
- DomainConstraint.cs
- Mouse.cs
- NumberSubstitution.cs
- NamespaceImport.cs
- Themes.cs
- XomlCompilerParameters.cs
- DocobjHost.cs
- TcpChannelFactory.cs
- ObjectStateEntry.cs
- DataColumnCollection.cs
- XmlSerializerAssemblyAttribute.cs
- StylusSystemGestureEventArgs.cs
- Win32KeyboardDevice.cs
- NamedElement.cs
- ProfileServiceManager.cs
- RsaEndpointIdentity.cs
- SizeAnimationClockResource.cs
- XmlAnyElementAttribute.cs
- NTAccount.cs