Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListControl.cs
- InOutArgumentConverter.cs
- AdornerLayer.cs
- SplitContainer.cs
- XmlElementAttributes.cs
- PeerUnsafeNativeCryptMethods.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- ServiceDefaults.cs
- ResourceManagerWrapper.cs
- TreeNodeMouseHoverEvent.cs
- DuplicateWaitObjectException.cs
- StylusButton.cs
- ItemList.cs
- DataSourceComponent.cs
- CreatingCookieEventArgs.cs
- StreamHelper.cs
- QilTargetType.cs
- TextEditorCopyPaste.cs
- ColorTransform.cs
- SHA384.cs
- MobileControlDesigner.cs
- ElementNotAvailableException.cs
- PageAdapter.cs
- VirtualizingStackPanel.cs
- EUCJPEncoding.cs
- DPCustomTypeDescriptor.cs
- Int32RectValueSerializer.cs
- DrawToolTipEventArgs.cs
- BaseComponentEditor.cs
- SiteMapNodeItemEventArgs.cs
- HtmlProps.cs
- ProfileParameter.cs
- ScrollItemPattern.cs
- HttpHeaderCollection.cs
- StorageAssociationTypeMapping.cs
- HttpCacheVaryByContentEncodings.cs
- FileDataSourceCache.cs
- PlacementWorkspace.cs
- ToolStripPanelSelectionBehavior.cs
- DecoratedNameAttribute.cs
- TextTreeText.cs
- FormViewRow.cs
- CompositionAdorner.cs
- PathSegment.cs
- JsonQNameDataContract.cs
- COM2ComponentEditor.cs
- NominalTypeEliminator.cs
- shaper.cs
- DoubleLinkListEnumerator.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- QilTargetType.cs
- IntegerValidator.cs
- TextAnchor.cs
- ProfessionalColors.cs
- ListViewUpdatedEventArgs.cs
- EffectiveValueEntry.cs
- CriticalHandle.cs
- DataGridLinkButton.cs
- KeyTime.cs
- OpenTypeCommon.cs
- Inflater.cs
- DesignerUtils.cs
- NullableFloatMinMaxAggregationOperator.cs
- LinkedList.cs
- BuildProviderAppliesToAttribute.cs
- TransactionFilter.cs
- CompilerErrorCollection.cs
- PagerStyle.cs
- DynamicRendererThreadManager.cs
- ExpressionCopier.cs
- DataGridState.cs
- DataGridViewAddColumnDialog.cs
- DataColumn.cs
- SapiRecoInterop.cs
- Tablet.cs
- Point3DCollectionConverter.cs
- HttpModuleAction.cs
- ContractMapping.cs
- CaseCqlBlock.cs
- TypefaceCollection.cs
- MarkedHighlightComponent.cs
- DecimalStorage.cs
- _IPv4Address.cs
- OletxResourceManager.cs
- Module.cs
- PointAnimationUsingKeyFrames.cs
- ToolStripDropTargetManager.cs
- WebBrowserHelper.cs
- COM2IDispatchConverter.cs
- PathGeometry.cs
- Delegate.cs
- XmlHierarchyData.cs
- AnnotationAuthorChangedEventArgs.cs
- XmlSchemaDatatype.cs
- ToolStripDropTargetManager.cs
- QilTargetType.cs
- AttachedAnnotationChangedEventArgs.cs
- Semaphore.cs
- PaginationProgressEventArgs.cs
- PageThemeCodeDomTreeGenerator.cs