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
- AlternationConverter.cs
- EditableRegion.cs
- ProxyAttribute.cs
- RectConverter.cs
- RawStylusInputCustomDataList.cs
- Rect3D.cs
- GridViewDeletedEventArgs.cs
- TraceHandler.cs
- HtmlTableRowCollection.cs
- RawUIStateInputReport.cs
- Listbox.cs
- AQNBuilder.cs
- Barrier.cs
- PointCollection.cs
- AbandonedMutexException.cs
- DiscoveryReferences.cs
- DataGridColumnCollectionEditor.cs
- ArraySortHelper.cs
- ScriptServiceAttribute.cs
- PreloadedPackages.cs
- DataPagerFieldCollection.cs
- Material.cs
- FederatedMessageSecurityOverHttpElement.cs
- ObjectReferenceStack.cs
- Matrix3D.cs
- ToolStripItemBehavior.cs
- RequestQueue.cs
- OraclePermissionAttribute.cs
- XmlElementList.cs
- NodeInfo.cs
- PlaceHolder.cs
- XhtmlMobileTextWriter.cs
- LayeredChannelFactory.cs
- Quaternion.cs
- ResourceWriter.cs
- ByteConverter.cs
- XPathDocumentNavigator.cs
- Button.cs
- OleDbRowUpdatedEvent.cs
- UdpDiscoveryMessageFilter.cs
- SmtpFailedRecipientsException.cs
- DetailsViewAutoFormat.cs
- CurrencyWrapper.cs
- XmlNodeList.cs
- WebPartConnection.cs
- ExpressionVisitor.cs
- FrugalList.cs
- RemoteWebConfigurationHostStream.cs
- SqlBulkCopyColumnMapping.cs
- SQLInt32.cs
- ProviderSettingsCollection.cs
- CacheSection.cs
- NativeObjectSecurity.cs
- XmlEntity.cs
- Point3D.cs
- DispatcherExceptionFilterEventArgs.cs
- Parser.cs
- Unit.cs
- PrintPreviewControl.cs
- SequentialUshortCollection.cs
- ResourceAttributes.cs
- ScaleTransform.cs
- DependencyPropertyAttribute.cs
- XmlHierarchicalDataSourceView.cs
- FrameworkTemplate.cs
- BlurEffect.cs
- BaseDataBoundControl.cs
- DirectoryObjectSecurity.cs
- WebBrowserNavigatingEventHandler.cs
- CounterCreationDataCollection.cs
- TemplateApplicationHelper.cs
- MoveSizeWinEventHandler.cs
- RawMouseInputReport.cs
- TableColumn.cs
- WebPartMenuStyle.cs
- Vector3D.cs
- PropertyGridView.cs
- VariableElement.cs
- SubstitutionList.cs
- BindingGraph.cs
- SqlWorkflowPersistenceService.cs
- ImmutableCollection.cs
- RemotingSurrogateSelector.cs
- CompilerGlobalScopeAttribute.cs
- XPathMessageFilterElementCollection.cs
- MetaType.cs
- control.ime.cs
- WebPartChrome.cs
- Wizard.cs
- SqlTriggerAttribute.cs
- DependencyPropertyConverter.cs
- ProcessThread.cs
- SystemIPGlobalStatistics.cs
- PersistenceProviderElement.cs
- LocalizationComments.cs
- ViewCellRelation.cs
- XslTransform.cs
- HostedTransportConfigurationBase.cs
- BrowserCapabilitiesFactoryBase.cs
- PersonalizationState.cs