Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Print / Reach / Serialization / manager / ReachPageContentCollectionSerializerAsync.cs / 1 / ReachPageContentCollectionSerializerAsync.cs
/*++ Copyright (C) 2004- 2005 Microsoft Corporation All rights reserved. Module Name: ReachPageContentCollectionSerializerAsync.cs Abstract: This file contains the definition of a class that defines the common functionality required to serialize a PageContentCollection Author: [....] ([....]) 25-May-2005 Revision History: --*/ using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Xml; using System.IO; using System.Security; using System.Security.Permissions; using System.ComponentModel.Design.Serialization; using System.Windows.Xps.Packaging; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Markup; namespace System.Windows.Xps.Serialization { ////// Class defining common functionality required to /// serialize a PageContentCollectionSerializer. /// internal class ReachPageContentCollectionSerializerAsync : ReachSerializerAsync { #region Constructor ////// Constructor for class ReachPageContentCollectionSerializer /// /// /// The serialization manager, the services of which are /// used later in the serialization process of the type. /// public ReachPageContentCollectionSerializerAsync( PackageSerializationManager manager ): base(manager) { } #endregion Constructor #region Public Mehods public override void AsyncOperation( ReachSerializerContext context ) { if(context == null) { } switch (context.Action) { case SerializerAction.endPersistObjectData: { EndPersistObjectData(); break; } case SerializerAction.serializeNextPageContent: { PageContentCollectionSerializerContext thisContext = context as PageContentCollectionSerializerContext; if(thisContext != null) { SerializeNextPageContent(thisContext.Enumerator, thisContext.ObjectContext); } break; } default: { base.AsyncOperation(context); break; } } } #endregion #region Internal Methods ////// The method is called once the object data is discovered at that /// point of the serialization process. /// /// /// The context of the object to be serialized at this time. /// internal override void PersistObjectData( SerializableObjectContext serializableObjectContext ) { if (serializableObjectContext == null) { throw new ArgumentNullException("serializableObjectContext"); } IEnumerable enumerableObject = serializableObjectContext.TargetObject as IEnumerable; if (enumerableObject == null) { throw new XpsSerializationException(ReachSR.Get(ReachSRID.MustBeOfType, "serializableObjectContext.TargetObject", typeof(IEnumerable))); } // // Serialize the PageContent Items contained within the collection // SerializePageContents(serializableObjectContext); } internal override void EndPersistObjectData( ) { // // do nothing in this stage // } #endregion Internal Methods #region Private Methods ////// This is being called to serialize the Page Content items /// contained within the collection /// /// /// The context of the object to be serialized at this time. /// private void SerializePageContents( SerializableObjectContext serializableObjectContext ) { // // Serialize each PageContent in PageContentColleciton // IEnumerator enumerator = ((IEnumerable)serializableObjectContext.TargetObject).GetEnumerator(); enumerator.Reset(); PageContentCollectionSerializerContext context = new PageContentCollectionSerializerContext(this, serializableObjectContext, enumerator, SerializerAction.serializeNextPageContent); ((XpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context); } private void SerializeNextPageContent( IEnumerator enumerator, SerializableObjectContext serializableObjectContext ) { if(enumerator.MoveNext()) { PageContentCollectionSerializerContext context = new PageContentCollectionSerializerContext(this, serializableObjectContext, enumerator, SerializerAction.serializeNextPageContent); ((XpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context); object pageContent = enumerator.Current; SerializePageContent(pageContent); } } ////// Called to serialize a single PageContent /// /// /// The PageContent to be serialized. /// private void SerializePageContent( object pageContent ) { ReachSerializer serializer = SerializationManager.GetSerializer(pageContent); if(serializer!=null) { serializer.SerializeObject(pageContent); } else { throw new XpsSerializationException(ReachSR.Get(ReachSRID.ReachSerialization_NoSerializer)); } } #endregion Private Methods }; internal class PageContentCollectionSerializerContext : ReachSerializerContext { public PageContentCollectionSerializerContext( ReachSerializerAsync serializer, SerializableObjectContext objectContext, IEnumerator enumerator, SerializerAction action ): base(serializer,objectContext,action) { this._enumerator = enumerator; } public IEnumerator Enumerator { get { return _enumerator; } } private IEnumerator _enumerator; }; } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ContextMenuStripGroupCollection.cs
- TextCompositionEventArgs.cs
- ExpressionBindingCollection.cs
- VariableAction.cs
- ITextView.cs
- TypeSystemProvider.cs
- PageEventArgs.cs
- ArgumentDesigner.xaml.cs
- sqlpipe.cs
- HttpResponseWrapper.cs
- SimpleFieldTemplateFactory.cs
- WmlValidatorAdapter.cs
- IndexedEnumerable.cs
- DllNotFoundException.cs
- EmptyWithCancelationCheckWorkItem.cs
- XmlNamespaceDeclarationsAttribute.cs
- ContextMenuStrip.cs
- BamlStream.cs
- TdsParserStateObject.cs
- ToolStripPanelCell.cs
- HttpAsyncResult.cs
- WorkflowStateRollbackService.cs
- PaintValueEventArgs.cs
- Or.cs
- SourceFileInfo.cs
- SoapAttributes.cs
- ProfileGroupSettings.cs
- XmlBinaryReader.cs
- XmlIgnoreAttribute.cs
- initElementDictionary.cs
- Ticks.cs
- ThreadStartException.cs
- PersonalizationEntry.cs
- PointKeyFrameCollection.cs
- SystemWebCachingSectionGroup.cs
- JsonEncodingStreamWrapper.cs
- ContentAlignmentEditor.cs
- ObjRef.cs
- ConsumerConnectionPoint.cs
- XdrBuilder.cs
- IndicShape.cs
- ClientData.cs
- TextTreeNode.cs
- XmlSchemaIdentityConstraint.cs
- TableAdapterManagerNameHandler.cs
- DataConnectionHelper.cs
- ResourcesChangeInfo.cs
- WindowsListViewSubItem.cs
- xdrvalidator.cs
- AccessDataSourceWizardForm.cs
- DataGridViewRowPostPaintEventArgs.cs
- LocalizedNameDescriptionPair.cs
- ClrProviderManifest.cs
- ServiceThrottlingBehavior.cs
- SwitchAttribute.cs
- StyleModeStack.cs
- odbcmetadatacolumnnames.cs
- PointHitTestParameters.cs
- ViewBase.cs
- ScriptingWebServicesSectionGroup.cs
- HwndSourceParameters.cs
- TextServicesDisplayAttribute.cs
- DBParameter.cs
- ObjectViewQueryResultData.cs
- DataGridClipboardCellContent.cs
- XamlPoint3DCollectionSerializer.cs
- DataService.cs
- XmlILOptimizerVisitor.cs
- SystemBrushes.cs
- ActivityInstanceReference.cs
- TextRange.cs
- VBIdentifierName.cs
- ResourceExpressionBuilder.cs
- DataException.cs
- ConfigurationManager.cs
- AgileSafeNativeMemoryHandle.cs
- UiaCoreApi.cs
- CqlErrorHelper.cs
- _ListenerRequestStream.cs
- ControlBindingsConverter.cs
- ImageMetadata.cs
- IDictionary.cs
- PageThemeParser.cs
- EventLogPermission.cs
- SafeThemeHandle.cs
- ImageAutomationPeer.cs
- TableLayoutSettings.cs
- ArrayElementGridEntry.cs
- WebPartDisplayModeCollection.cs
- SplitterPanel.cs
- SchemaImporter.cs
- DotExpr.cs
- QuaternionAnimationBase.cs
- SchemaMerger.cs
- SynchronizationScope.cs
- IsolationInterop.cs
- WindowsScrollBarBits.cs
- SessionParameter.cs
- RangeBaseAutomationPeer.cs
- ModelChangedEventArgsImpl.cs