XmlDocumentSurrogate.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / XmlDocumentSurrogate.cs / 1305376 / XmlDocumentSurrogate.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; 

    #region XmlDocumentSurrogate 
 	internal sealed class XmlDocumentSurrogate : ISerializationSurrogate
	{
		internal XmlDocumentSurrogate() {}
		void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) 
 		{
			XmlDocument doc = obj as XmlDocument; 
 			if (doc == null) 
                throw new ArgumentException(SR.GetString(SR.Error_InvalidArgumentValue), "obj");
 
 			info.AddValue("innerXml", doc.InnerXml);
			info.SetType(typeof(XmlDocumentReference));
 		}
		object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) 
		{
			return null; 
 		} 

		#region XmlDocumentReference 
 		[Serializable]
 		private sealed class XmlDocumentReference : IObjectReference
		{
 			private string innerXml = string.Empty; 

			Object IObjectReference.GetRealObject(StreamingContext context) 
			{ 
				XmlDocument doc = new XmlDocument();
 
                if (!string.IsNullOrEmpty(this.innerXml))
 				    doc.InnerXml = this.innerXml;

				return doc; 
 			}
 		} 
		#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