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;
 | |
| 		}
 | |
| 	}
 | |
| }
 |