93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Runtime.Serialization;
 | 
						|
using System.Xml;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
	/// <summary>
 | 
						|
	/// Summary description for DotNetBarStreamer.
 | 
						|
	/// </summary>
 | 
						|
	[Serializable()]
 | 
						|
	public sealed class DotNetBarStreamer:IDisposable,ISerializable
 | 
						|
	{
 | 
						|
		private XmlDocument m_XmlDoc=null;
 | 
						|
		private DotNetBarManager m_Owner=null;
 | 
						|
 | 
						|
		private DotNetBarStreamer(){}
 | 
						|
		private DotNetBarStreamer(SerializationInfo info, StreamingContext c)
 | 
						|
		{
 | 
						|
			SerializationInfoEnumerator en=info.GetEnumerator();
 | 
						|
			while(en.MoveNext())
 | 
						|
			{
 | 
						|
				//System.Windows.Forms.MessageBox.Show("Read stream: "+en.Name);
 | 
						|
				if(en.Name=="dotnetbardata")
 | 
						|
				{
 | 
						|
					string s=(string)en.Value;
 | 
						|
					m_XmlDoc=new XmlDocument();
 | 
						|
                    m_XmlDoc.LoadXml(s);
 | 
						|
					break;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		public DotNetBarStreamer(DotNetBarManager owner)
 | 
						|
		{
 | 
						|
			m_Owner=owner;
 | 
						|
		}
 | 
						|
 | 
						|
		void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
 | 
						|
		{
 | 
						|
			/*if(m_Owner==null)
 | 
						|
			{
 | 
						|
				if(m_XmlDoc!=null)
 | 
						|
                    System.Windows.Forms.MessageBox.Show("XML DOC IS not NULL !!!!");
 | 
						|
				else
 | 
						|
					System.Windows.Forms.MessageBox.Show("Serializing: NULL");
 | 
						|
			}
 | 
						|
			else
 | 
						|
				System.Windows.Forms.MessageBox.Show("Serializing VALUE");*/
 | 
						|
			if(m_Owner==null && m_XmlDoc==null)
 | 
						|
				return;
 | 
						|
 | 
						|
			// Very important to set the type to string, if type is not set then
 | 
						|
			// complete assembly version is written to the file, probably becouse type is
 | 
						|
			// binary and when new version is compiled the old stream could not be loaded again.
 | 
						|
			string s=info.AssemblyName;
 | 
						|
			string[] sarr=s.Split(',');
 | 
						|
			s="";
 | 
						|
			for(int i=0;i<sarr.Length;i++)
 | 
						|
			{
 | 
						|
				if(!((string)sarr.GetValue(i)).ToLower().Trim().StartsWith("version"))
 | 
						|
				{
 | 
						|
					if(s!="") s+=",";
 | 
						|
					s+=sarr.GetValue(i);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			info.AssemblyName=s;
 | 
						|
			//System.Reflection.AssemblyName name=System.Reflection.Assembly.GetExecutingAssembly().GetName();
 | 
						|
			
 | 
						|
			if(m_Owner!=null)
 | 
						|
			{
 | 
						|
				XmlDocument xml=new XmlDocument();
 | 
						|
				m_Owner.SaveDefinition(xml);
 | 
						|
				
 | 
						|
				info.AddValue("dotnetbardata",xml.OuterXml);
 | 
						|
			}
 | 
						|
			else
 | 
						|
				info.AddValue("dotnetbardata",m_XmlDoc.OuterXml);
 | 
						|
		}
 | 
						|
 | 
						|
		internal XmlDocument Data
 | 
						|
		{
 | 
						|
			get
 | 
						|
			{
 | 
						|
				return m_XmlDoc;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		void IDisposable.Dispose()
 | 
						|
		{
 | 
						|
			m_Owner=null;
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |