Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Serialization / SerializationObjectManager.cs / 1305376 / 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(); } [System.Security.SecurityCritical] // auto-generated_required 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(); } [System.Security.SecurityCritical] // auto-generated_required 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
- KeyInstance.cs
- XmlBinaryReader.cs
- X509Utils.cs
- ActivityDesigner.cs
- AspNetRouteServiceHttpHandler.cs
- TraceListeners.cs
- SymmetricCryptoHandle.cs
- DataObjectMethodAttribute.cs
- COAUTHIDENTITY.cs
- TypeReference.cs
- InstanceStore.cs
- DBCommand.cs
- ActivationArguments.cs
- ProfileGroupSettingsCollection.cs
- SortedDictionary.cs
- SafeProcessHandle.cs
- AutoGeneratedFieldProperties.cs
- sqlser.cs
- BinaryWriter.cs
- OracleCommand.cs
- AsynchronousChannel.cs
- EdmItemError.cs
- MSHTMLHostUtil.cs
- TextBreakpoint.cs
- TextFormatterHost.cs
- FixedDocumentSequencePaginator.cs
- XD.cs
- TypeForwardedToAttribute.cs
- PropertyConverter.cs
- TabControlAutomationPeer.cs
- TableItemPattern.cs
- DataSourceView.cs
- StateWorkerRequest.cs
- InkCanvasInnerCanvas.cs
- SelectedPathEditor.cs
- WorkflowView.cs
- BrowserDefinition.cs
- StatusBarPanel.cs
- Knowncolors.cs
- TileBrush.cs
- CroppedBitmap.cs
- SystemPens.cs
- TaiwanLunisolarCalendar.cs
- FileSecurity.cs
- PathGeometry.cs
- Dictionary.cs
- JournalNavigationScope.cs
- ZipFileInfo.cs
- ListView.cs
- GridViewAutomationPeer.cs
- CurrencyManager.cs
- RestHandlerFactory.cs
- RuntimeTransactionHandle.cs
- RadioButton.cs
- SrgsSubset.cs
- DoubleLinkListEnumerator.cs
- CommandField.cs
- FileVersion.cs
- InternalsVisibleToAttribute.cs
- ProfileGroupSettings.cs
- Events.cs
- XmlSchemaCollection.cs
- NativeMethods.cs
- DataBoundControlHelper.cs
- HttpModulesSection.cs
- QuarticEase.cs
- CellLabel.cs
- FastPropertyAccessor.cs
- wgx_exports.cs
- UnauthorizedWebPart.cs
- ColorEditor.cs
- WbmpConverter.cs
- ActivityValidator.cs
- HashHelper.cs
- TaskFormBase.cs
- XmlAnyElementAttributes.cs
- WorkerRequest.cs
- ImageListUtils.cs
- PointLight.cs
- TextTreeTextBlock.cs
- DataControlLinkButton.cs
- RIPEMD160.cs
- OutputCacheEntry.cs
- TextProperties.cs
- RemoveStoryboard.cs
- SecurityUtils.cs
- SizeKeyFrameCollection.cs
- DocumentProperties.cs
- MessageDesigner.cs
- SystemNetworkInterface.cs
- FrameworkElementAutomationPeer.cs
- Error.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- HelpInfo.cs
- ConstructorExpr.cs
- SimpleApplicationHost.cs
- ServiceContractViewControl.Designer.cs
- X509ChainElement.cs
- SocketManager.cs
- GridViewUpdateEventArgs.cs