Code:
/ FX-1434 / FX-1434 / 1.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
- WorkflowDebuggerSteppingAttribute.cs
- WebPartConnectionsCancelVerb.cs
- ToolStripSeparatorRenderEventArgs.cs
- UserControlCodeDomTreeGenerator.cs
- SqlInternalConnectionSmi.cs
- BooleanAnimationUsingKeyFrames.cs
- CfgArc.cs
- sitestring.cs
- EdmSchemaError.cs
- WebPartDisplayModeCancelEventArgs.cs
- ServiceOperationParameter.cs
- DynamicArgumentDialog.cs
- ListBoxItemAutomationPeer.cs
- PriorityBindingExpression.cs
- HttpException.cs
- EventLevel.cs
- COM2ExtendedBrowsingHandler.cs
- LinqDataSourceUpdateEventArgs.cs
- ColorIndependentAnimationStorage.cs
- SimpleWebHandlerParser.cs
- InputManager.cs
- RelationshipWrapper.cs
- LineProperties.cs
- ScaleTransform3D.cs
- Drawing.cs
- DataGridViewRowEventArgs.cs
- CodeGenHelper.cs
- UnmanagedMarshal.cs
- PagePropertiesChangingEventArgs.cs
- DescendantQuery.cs
- CancellationTokenSource.cs
- ObjRef.cs
- PassportPrincipal.cs
- HttpRequestCacheValidator.cs
- PackagePartCollection.cs
- DocumentViewerHelper.cs
- FixedSOMElement.cs
- RuntimeHelpers.cs
- TypefaceMap.cs
- SelectionGlyphBase.cs
- PointValueSerializer.cs
- Button.cs
- RequestTimeoutManager.cs
- CodePageEncoding.cs
- Int32Converter.cs
- CompositeFontInfo.cs
- SchemaNotation.cs
- HttpRequestCacheValidator.cs
- BoundColumn.cs
- DataServiceRequest.cs
- RunClient.cs
- Typeface.cs
- UserControlCodeDomTreeGenerator.cs
- BlobPersonalizationState.cs
- ResourceDictionary.cs
- ContentHostHelper.cs
- DotExpr.cs
- Object.cs
- ScrollableControlDesigner.cs
- FontStyle.cs
- EntityUtil.cs
- CustomAttributeFormatException.cs
- DataError.cs
- ReadOnlyDictionary.cs
- itemelement.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DiagnosticTraceSource.cs
- LostFocusEventManager.cs
- SecureConversationSecurityTokenParameters.cs
- PointHitTestParameters.cs
- ProtectedConfiguration.cs
- MultipleCopiesCollection.cs
- TraceContext.cs
- WorkflowEventArgs.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- SchemaImporterExtensionsSection.cs
- SafeProcessHandle.cs
- RootBrowserWindowAutomationPeer.cs
- ExceptQueryOperator.cs
- AutomationPattern.cs
- ListControl.cs
- InkCanvasAutomationPeer.cs
- XmlEncodedRawTextWriter.cs
- ExtensionDataObject.cs
- InstallerTypeAttribute.cs
- DataColumnCollection.cs
- MetadataCollection.cs
- StrokeSerializer.cs
- ObjectMemberMapping.cs
- GridEntry.cs
- SourceSwitch.cs
- XsdValidatingReader.cs
- BasicCommandTreeVisitor.cs
- ComponentEditorForm.cs
- NativeMethods.cs
- SQLDecimal.cs
- ConnectionOrientedTransportManager.cs
- ValueConversionAttribute.cs
- StringBuilder.cs
- CharStorage.cs