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
- CultureInfoConverter.cs
- ArgumentException.cs
- IItemContainerGenerator.cs
- Section.cs
- ClientRoleProvider.cs
- DesignBindingConverter.cs
- WSDualHttpSecurityMode.cs
- WebPartDisplayModeCancelEventArgs.cs
- EventSinkHelperWriter.cs
- MemberProjectedSlot.cs
- WebBrowserNavigatedEventHandler.cs
- WebEventTraceProvider.cs
- DBParameter.cs
- Matrix3DStack.cs
- ListControlConvertEventArgs.cs
- AutomationEventArgs.cs
- CompletionProxy.cs
- TreeNodeSelectionProcessor.cs
- InternalConfigEventArgs.cs
- XmlSchemaDocumentation.cs
- BaseCodePageEncoding.cs
- ControlValuePropertyAttribute.cs
- GuidelineSet.cs
- ImpersonationContext.cs
- DragEvent.cs
- XomlCompiler.cs
- PeerNameRecord.cs
- NativeCompoundFileAPIs.cs
- EntityTypeBase.cs
- SrgsOneOf.cs
- ActivityTypeResolver.xaml.cs
- ListParaClient.cs
- CodeTypeDeclaration.cs
- mansign.cs
- SiteMapDataSourceView.cs
- SHA1Managed.cs
- PropagatorResult.cs
- PrintSystemException.cs
- CryptoApi.cs
- WSFederationHttpBindingElement.cs
- ProfileBuildProvider.cs
- DataReceivedEventArgs.cs
- PreservationFileWriter.cs
- EventData.cs
- SizeChangedInfo.cs
- CodeMethodInvokeExpression.cs
- NativeMethods.cs
- ClientRoleProvider.cs
- AccessText.cs
- ProfileSection.cs
- FunctionUpdateCommand.cs
- Vertex.cs
- CorePropertiesFilter.cs
- GroupLabel.cs
- SmtpAuthenticationManager.cs
- XmlMemberMapping.cs
- DataConnectionHelper.cs
- ValuePatternIdentifiers.cs
- StringWriter.cs
- WpfWebRequestHelper.cs
- ClientRuntimeConfig.cs
- BinaryWriter.cs
- ImageDrawing.cs
- DataGridViewRowEventArgs.cs
- Math.cs
- ListViewSortEventArgs.cs
- _Semaphore.cs
- DataColumnCollection.cs
- CardSpaceException.cs
- ServiceModelConfigurationSectionGroup.cs
- SqlUtil.cs
- TiffBitmapEncoder.cs
- PathNode.cs
- InvalidCastException.cs
- QueryStringParameter.cs
- DeclaredTypeElement.cs
- GetRecipientListRequest.cs
- ClientEventManager.cs
- MetadataPropertyvalue.cs
- SoapEnumAttribute.cs
- HttpListenerException.cs
- SeekableReadStream.cs
- XmlSchemaChoice.cs
- ToolStripStatusLabel.cs
- FunctionImportElement.cs
- CompatibleIComparer.cs
- WebScriptEnablingElement.cs
- CatalogZoneBase.cs
- AmbientLight.cs
- ContextConfiguration.cs
- ParseNumbers.cs
- SmtpDigestAuthenticationModule.cs
- DynamicExpression.cs
- References.cs
- ViewSimplifier.cs
- DecimalAnimationBase.cs
- PermissionListSet.cs
- DateTimePicker.cs
- GridViewHeaderRowPresenter.cs
- CookieParameter.cs