QueueSurrogate.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK