Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- QilTernary.cs
- TaskDesigner.cs
- TrustManagerMoreInformation.cs
- CreateUserErrorEventArgs.cs
- FunctionMappingTranslator.cs
- Italic.cs
- MsmqIntegrationMessagePool.cs
- IOThreadScheduler.cs
- HttpValueCollection.cs
- WebBrowserSiteBase.cs
- DiscoveryReferences.cs
- FormViewPagerRow.cs
- CodeTypeReference.cs
- BindingUtils.cs
- SpellCheck.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ColumnHeader.cs
- TextServicesManager.cs
- HttpCookiesSection.cs
- SimpleWebHandlerParser.cs
- MetabaseServerConfig.cs
- __ConsoleStream.cs
- MdiWindowListItemConverter.cs
- BaseDataBoundControl.cs
- ResourcePool.cs
- CheckBox.cs
- HighlightOverlayGlyph.cs
- TableItemStyle.cs
- PackageDigitalSignatureManager.cs
- Transform3DGroup.cs
- TimelineGroup.cs
- QilCloneVisitor.cs
- CodeDirectionExpression.cs
- TypeUsage.cs
- Debug.cs
- ArithmeticException.cs
- Event.cs
- Match.cs
- XPathNodePointer.cs
- safex509handles.cs
- EntityFrameworkVersions.cs
- ValidatorCompatibilityHelper.cs
- XpsFixedPageReaderWriter.cs
- HeaderLabel.cs
- HttpResponseInternalWrapper.cs
- columnmapfactory.cs
- WpfXamlType.cs
- DoubleLinkListEnumerator.cs
- TextRangeEditTables.cs
- WasHostedComPlusFactory.cs
- MessageHeaderInfoTraceRecord.cs
- DatePicker.cs
- SerializeAbsoluteContext.cs
- ProviderException.cs
- StateDesignerConnector.cs
- GridViewColumnCollection.cs
- SiteMap.cs
- TargetConverter.cs
- DataListCommandEventArgs.cs
- WhitespaceRule.cs
- SimpleExpression.cs
- SecurityContextSecurityToken.cs
- TargetInvocationException.cs
- ButtonBaseDesigner.cs
- CodeAttributeDeclarationCollection.cs
- QilBinary.cs
- System.Data_BID.cs
- IpcChannel.cs
- UnauthorizedWebPart.cs
- ProcessModelInfo.cs
- DataServiceHostFactory.cs
- IntegerCollectionEditor.cs
- CanExecuteRoutedEventArgs.cs
- HtmlContainerControl.cs
- OracleConnection.cs
- FragmentQuery.cs
- XmlSchemaNotation.cs
- DPTypeDescriptorContext.cs
- ExplicitDiscriminatorMap.cs
- CLRBindingWorker.cs
- ParsedAttributeCollection.cs
- MachineKey.cs
- TagPrefixInfo.cs
- FunctionCommandText.cs
- ExtensionFile.cs
- XhtmlBasicPageAdapter.cs
- UTF32Encoding.cs
- FixedSOMTableCell.cs
- LinqDataView.cs
- UserControlParser.cs
- HMACRIPEMD160.cs
- ReadOnlyDictionary.cs
- AlignmentYValidation.cs
- ConfigXmlCDataSection.cs
- SqlFacetAttribute.cs
- SystemEvents.cs
- CodePrimitiveExpression.cs
- UpdateDelegates.Generated.cs
- InstanceKey.cs
- input.cs