Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / QueueSurrogate.cs / 1305376 / QueueSurrogate.cs
namespace System.Workflow.ComponentModel.Serialization { using System; using System.Xml; using System.Runtime.Serialization; using System.Reflection; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections; using System.Collections.Generic; #region QueueSurrogate internal sealed class QueueSurrogate : ISerializationSurrogate { internal QueueSurrogate() { } void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) { object[] items = ((Queue)obj).ToArray(); if (items.Length == 1) info.AddValue("item", items[0]); else info.AddValue("items", items); info.SetType(typeof(QRef)); } object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { return null; } #region QRef [Serializable] private sealed class QRef : IObjectReference, IDeserializationCallback { [OptionalField] private IList items = null; [OptionalField] private object item = null; [NonSerialized] private Queue queue = null; Object IObjectReference.GetRealObject(StreamingContext context) { if (this.queue == null) { this.queue = new Queue(); } return this.queue; } void IDeserializationCallback.OnDeserialization(Object sender) { if (this.queue != null) { if (this.items != null) { for (int n = 0; n < this.items.Count; n++) this.queue.Enqueue(items[n]); } else { this.queue.Enqueue(this.item); } this.queue = null; } } } #endregion } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel.Serialization { using System; using System.Xml; using System.Runtime.Serialization; using System.Reflection; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections; using System.Collections.Generic; #region QueueSurrogate internal sealed class QueueSurrogate : ISerializationSurrogate { internal QueueSurrogate() { } void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) { object[] items = ((Queue)obj).ToArray(); if (items.Length == 1) info.AddValue("item", items[0]); else info.AddValue("items", items); info.SetType(typeof(QRef)); } object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { return null; } #region QRef [Serializable] private sealed class QRef : IObjectReference, IDeserializationCallback { [OptionalField] private IList items = null; [OptionalField] private object item = null; [NonSerialized] private Queue queue = null; Object IObjectReference.GetRealObject(StreamingContext context) { if (this.queue == null) { this.queue = new Queue(); } return this.queue; } void IDeserializationCallback.OnDeserialization(Object sender) { if (this.queue != null) { if (this.items != null) { for (int n = 0; n < this.items.Count; n++) this.queue.Enqueue(items[n]); } else { this.queue.Enqueue(this.item); } this.queue = null; } } } #endregion } #endregion } // 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
- SystemIPInterfaceProperties.cs
- SqlHelper.cs
- Models.cs
- StaticTextPointer.cs
- XhtmlBasicValidatorAdapter.cs
- InstanceCreationEditor.cs
- _CookieModule.cs
- DataShape.cs
- EntityWrapper.cs
- MessageDecoder.cs
- Visual3D.cs
- XmlSchemaAppInfo.cs
- ToolStripPanel.cs
- SafeNativeMethodsOther.cs
- NumericUpDownAccelerationCollection.cs
- DefaultIfEmptyQueryOperator.cs
- SafeBitVector32.cs
- ConfigurationElement.cs
- AssociativeAggregationOperator.cs
- ObjectCloneHelper.cs
- DataGridColumnCollection.cs
- MarshalByValueComponent.cs
- CodeParameterDeclarationExpression.cs
- MaskedTextBoxTextEditor.cs
- TogglePatternIdentifiers.cs
- HostingPreferredMapPath.cs
- PrefixHandle.cs
- TakeOrSkipQueryOperator.cs
- FunctionDescription.cs
- FieldMetadata.cs
- PersonalizableTypeEntry.cs
- OdbcPermission.cs
- Propagator.Evaluator.cs
- SyndicationDeserializer.cs
- ResourceProviderFactory.cs
- AnimationLayer.cs
- DigitalSignatureProvider.cs
- ClientProxyGenerator.cs
- ReflectTypeDescriptionProvider.cs
- QilParameter.cs
- TPLETWProvider.cs
- BatchServiceHost.cs
- WinFormsSecurity.cs
- followingsibling.cs
- OletxTransactionFormatter.cs
- SystemMulticastIPAddressInformation.cs
- MinimizableAttributeTypeConverter.cs
- CompilerCollection.cs
- ToolStripContainer.cs
- CallSiteOps.cs
- CodeMemberProperty.cs
- Rules.cs
- SqlDependencyListener.cs
- TypeResolver.cs
- Facet.cs
- SqlTypeSystemProvider.cs
- ScrollEventArgs.cs
- OpenTypeLayoutCache.cs
- QilCloneVisitor.cs
- WindowsListView.cs
- DSASignatureDeformatter.cs
- ProfileGroupSettings.cs
- SqlDataSourceConfigureSelectPanel.cs
- X509CertificateStore.cs
- XmlSchemaSimpleContentRestriction.cs
- Tablet.cs
- SqlSelectClauseBuilder.cs
- DiscoveryEndpointValidator.cs
- TextParagraphCache.cs
- CompiledQueryCacheEntry.cs
- ConfigurationValidatorAttribute.cs
- DelayedRegex.cs
- CreateUserWizardStep.cs
- ImageList.cs
- Exceptions.cs
- NativeMethods.cs
- SafeCryptoHandles.cs
- GridViewRow.cs
- InternalCache.cs
- DefaultTypeArgumentAttribute.cs
- ResourceReferenceExpressionConverter.cs
- RootBrowserWindowProxy.cs
- CapabilitiesRule.cs
- FaultImportOptions.cs
- UpDownEvent.cs
- TdsParserSessionPool.cs
- WebPartActionVerb.cs
- EntityTransaction.cs
- EdmItemCollection.cs
- ViewSimplifier.cs
- WebPartMinimizeVerb.cs
- XPathNode.cs
- DataViewManagerListItemTypeDescriptor.cs
- ProcessModuleCollection.cs
- Parser.cs
- TextElementAutomationPeer.cs
- XmlReaderSettings.cs
- RefExpr.cs
- PageCache.cs
- SafeFileMappingHandle.cs