Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AncillaryOps.cs
- MimeParameterWriter.cs
- Button.cs
- MenuItemCollectionEditorDialog.cs
- BordersPage.cs
- DefaultBinder.cs
- StrokeIntersection.cs
- ValidationRule.cs
- SecurityTokenRequirement.cs
- Base64Decoder.cs
- TableLayoutCellPaintEventArgs.cs
- ResourcePermissionBaseEntry.cs
- NamedObject.cs
- XPathNodeIterator.cs
- Signature.cs
- DiscoveryReferences.cs
- SoapEnvelopeProcessingElement.cs
- TemplateBindingExtension.cs
- BufferedGraphicsContext.cs
- StringReader.cs
- PagedDataSource.cs
- Freezable.cs
- DrawingContextDrawingContextWalker.cs
- Hyperlink.cs
- RoutedEventArgs.cs
- MenuBindingsEditorForm.cs
- DbUpdateCommandTree.cs
- EntityDataSourceWrapperCollection.cs
- SqlTransaction.cs
- DataServiceKeyAttribute.cs
- PrimitiveDataContract.cs
- AuthenticationService.cs
- WebContext.cs
- DesignerInterfaces.cs
- CultureTable.cs
- ArgumentOutOfRangeException.cs
- FunctionParameter.cs
- TimeEnumHelper.cs
- FileSystemEventArgs.cs
- WindowsListViewGroupHelper.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- ArrayListCollectionBase.cs
- TypeLoadException.cs
- InstanceView.cs
- _TLSstream.cs
- EditingMode.cs
- SystemFonts.cs
- AspNetRouteServiceHttpHandler.cs
- XmlSerializerVersionAttribute.cs
- OperationAbortedException.cs
- OdbcUtils.cs
- ReflectionPermission.cs
- FactoryMaker.cs
- Hex.cs
- CharacterMetricsDictionary.cs
- AccessControlEntry.cs
- ItemCheckEvent.cs
- _OverlappedAsyncResult.cs
- WindowsPrincipal.cs
- Transactions.cs
- RegexFCD.cs
- WindowsToolbarItemAsMenuItem.cs
- GeometryModel3D.cs
- OletxCommittableTransaction.cs
- TraceRecords.cs
- RecordBuilder.cs
- Update.cs
- DoubleKeyFrameCollection.cs
- BaseTemplateParser.cs
- BrowserInteropHelper.cs
- ControlCodeDomSerializer.cs
- TimeZone.cs
- TypedRowGenerator.cs
- DocumentNUp.cs
- PointF.cs
- PeerToPeerException.cs
- Itemizer.cs
- StringFunctions.cs
- GlyphElement.cs
- WorkflowWebService.cs
- _KerberosClient.cs
- DesigntimeLicenseContext.cs
- FileVersion.cs
- RetrieveVirtualItemEventArgs.cs
- UnsafeMethods.cs
- TimerElapsedEvenArgs.cs
- SplashScreenNativeMethods.cs
- NamespaceExpr.cs
- GenericIdentity.cs
- PointF.cs
- WindowCollection.cs
- SqlStream.cs
- ShaderRenderModeValidation.cs
- EventLog.cs
- ExpressionParser.cs
- ProxyWebPartManagerDesigner.cs
- ReplacementText.cs
- BrowsableAttribute.cs
- OutputScope.cs
- Win32SafeHandles.cs