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
- ConfigurationValues.cs
- CompoundFileStreamReference.cs
- DiscreteKeyFrames.cs
- DLinqTableProvider.cs
- FilterElement.cs
- SoapClientMessage.cs
- ContainerFilterService.cs
- DragEvent.cs
- WebConfigurationHostFileChange.cs
- IfJoinedCondition.cs
- ADConnectionHelper.cs
- MailMessageEventArgs.cs
- Rss20ItemFormatter.cs
- OSEnvironmentHelper.cs
- SmiConnection.cs
- Quack.cs
- XmlWhitespace.cs
- FormCollection.cs
- SpeakCompletedEventArgs.cs
- XmlIncludeAttribute.cs
- HttpRequestBase.cs
- WindowInteropHelper.cs
- _AutoWebProxyScriptEngine.cs
- ViewGenResults.cs
- TrustManagerMoreInformation.cs
- ListDictionary.cs
- MulticastNotSupportedException.cs
- RegexGroup.cs
- StorageComplexTypeMapping.cs
- BooleanConverter.cs
- OdbcCommand.cs
- ParagraphResult.cs
- RoleManagerSection.cs
- RectangleHotSpot.cs
- WorkflowRuntimeService.cs
- WebPartsSection.cs
- CellQuery.cs
- HashMembershipCondition.cs
- TreeWalkHelper.cs
- UTF8Encoding.cs
- XmlQueryTypeFactory.cs
- EmptyEnumerator.cs
- ListViewGroupItemCollection.cs
- Overlapped.cs
- HMACSHA384.cs
- WebPartManager.cs
- ColumnWidthChangedEvent.cs
- ContainerParagraph.cs
- UIHelper.cs
- TreeNodeClickEventArgs.cs
- Solver.cs
- AttributeAction.cs
- LayoutSettings.cs
- HashCodeCombiner.cs
- _UriTypeConverter.cs
- WebScriptEnablingBehavior.cs
- ExpressionBuilderCollection.cs
- ClonableStack.cs
- EventSourceCreationData.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- AsymmetricSignatureFormatter.cs
- PreviousTrackingServiceAttribute.cs
- DataGridViewAccessibleObject.cs
- WindowsRichEdit.cs
- TableRow.cs
- CodeTypeDeclaration.cs
- AttributeQuery.cs
- TriggerCollection.cs
- pingexception.cs
- SqlClientWrapperSmiStreamChars.cs
- AssemblyResourceLoader.cs
- DataServiceHostWrapper.cs
- StructuralCache.cs
- SortAction.cs
- Transactions.cs
- EntityDataSourceDataSelectionPanel.cs
- ColorConverter.cs
- Win32MouseDevice.cs
- BaseDataBoundControl.cs
- DocumentXmlWriter.cs
- TaskFormBase.cs
- SimpleTypeResolver.cs
- WebChannelFactory.cs
- BezierSegment.cs
- ConstraintCollection.cs
- StrongNameUtility.cs
- SoundPlayerAction.cs
- ProfileGroupSettingsCollection.cs
- TypedAsyncResult.cs
- DiagnosticStrings.cs
- GridViewColumn.cs
- ToolboxComponentsCreatingEventArgs.cs
- EpmCustomContentWriterNodeData.cs
- CommandConverter.cs
- AssertSection.cs
- TextPattern.cs
- DictionaryContent.cs
- RepeatInfo.cs
- ControlUtil.cs
- SqlDataSourceCache.cs