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
- NetTcpBindingCollectionElement.cs
- Relationship.cs
- HealthMonitoringSection.cs
- Pair.cs
- MDIClient.cs
- ClientConfigPaths.cs
- XNodeValidator.cs
- SystemInformation.cs
- smtppermission.cs
- DeploymentSection.cs
- ControlBuilderAttribute.cs
- XhtmlBasicLinkAdapter.cs
- Site.cs
- RoutingService.cs
- DesignerValidatorAdapter.cs
- DebugTrace.cs
- GenericPrincipal.cs
- Span.cs
- HttpPostedFile.cs
- datacache.cs
- AutoResetEvent.cs
- RequestQueryParser.cs
- AstTree.cs
- IPHostEntry.cs
- SqlDependencyUtils.cs
- DynamicValidatorEventArgs.cs
- DefaultAssemblyResolver.cs
- ErrorFormatter.cs
- Expander.cs
- HwndStylusInputProvider.cs
- ConversionContext.cs
- _CommandStream.cs
- Token.cs
- MouseActionConverter.cs
- MessageQueueTransaction.cs
- base64Transforms.cs
- ButtonFieldBase.cs
- DNS.cs
- Int32AnimationUsingKeyFrames.cs
- QilExpression.cs
- FormsAuthenticationCredentials.cs
- EditCommandColumn.cs
- XmlNavigatorFilter.cs
- Label.cs
- ApplicationTrust.cs
- DataGridBoolColumn.cs
- OleDbStruct.cs
- RequestQueue.cs
- SchemaInfo.cs
- ViewPort3D.cs
- DecimalConverter.cs
- ViewBox.cs
- XMLSchema.cs
- NativeMethods.cs
- SqlTriggerContext.cs
- XPathPatternParser.cs
- StringToken.cs
- CorePropertiesFilter.cs
- XmlComplianceUtil.cs
- ProjectionCamera.cs
- BamlRecords.cs
- EncryptedXml.cs
- LockRecursionException.cs
- File.cs
- CurrentChangingEventManager.cs
- ArrayWithOffset.cs
- UnsupportedPolicyOptionsException.cs
- ThreadExceptionEvent.cs
- RelationshipDetailsRow.cs
- DbgUtil.cs
- TreeChangeInfo.cs
- Accessors.cs
- ToolStripGrip.cs
- ObjectFullSpanRewriter.cs
- MetadataCollection.cs
- DesignerSerializationVisibilityAttribute.cs
- IgnoreDeviceFilterElementCollection.cs
- EnterpriseServicesHelper.cs
- DataReaderContainer.cs
- CounterSample.cs
- input.cs
- NamespaceList.cs
- ConfigurationStrings.cs
- EntityDataSourceState.cs
- DesignerCategoryAttribute.cs
- X509Certificate2.cs
- ReliableChannelBinder.cs
- TargetFrameworkUtil.cs
- ZipIOExtraField.cs
- InternalPermissions.cs
- IISUnsafeMethods.cs
- DynamicRendererThreadManager.cs
- ComplexPropertyEntry.cs
- StorageAssociationTypeMapping.cs
- WebPartZoneDesigner.cs
- CardSpacePolicyElement.cs
- PageContentCollection.cs
- PackWebRequest.cs
- HostedNamedPipeTransportManager.cs
- ResXFileRef.cs