Jeff, Yeah, I had tried that once and got a 'cannot convert from 'System.IO.StringWriter' to 'System.IO.Stream' complaint from the compiler. (The formatter's looking for a Stream in the first argument.)
StringWriter derices from TextWriter; how do we get Stream involved? I originally started down that way. thanks Steve Holak Senior Software Architect Brokerage Concepts IS Dept. 610-491-4879 email: [EMAIL PROTECTED] Jeff Key <[EMAIL PROTECTED] To: [EMAIL PROTECTED] OM> cc: Sent by: dotnet Subject: Re: [DOTNET] Object serialization to string representation discussion <[EMAIL PROTECTED] VELOP.COM> 05/21/2002 11:11 AM Please respond to dotnet discussion Steve, You can save yourself a couple lines of code by using the StringWriter: public static string SoapSerialize(object o) { StringWriter sw = new StringWriter(); SoapFormatter formatter = new SoapFormatter(); formatter.Serialize(sw, o); string ret = sw.ToString(); sw.Close(); return ret; } -jk -----Original Message----- From: dotnet discussion [mailto:[EMAIL PROTECTED]] On Behalf Of Steve Holak Sent: Tuesday, May 21, 2002 9:55 AM To: [EMAIL PROTECTED] Subject: Re: [DOTNET] Object serialization to string representation Thanks to all who replied to this; I took it all to heart and played with various scenarios based on our needs (and the intent was, as Brent stated, simply to persist the object to a database for a while and re-hydrate it later), and decided to use the SoapFormatter. I wrote a little wrapper class to handle the serialization for the application; I've included the simplified code below for anyone interested. Thanks again to everyone. public class Serialization { public static string SoapSerialize(object o) { string results; //Serialize the object Stream stream=new MemoryStream(); SoapFormatter formatter=new SoapFormatter(); formatter.Serialize(stream,o); //return the string StreamReader sr =new StreamReader(stream); sr.BaseStream.Seek(0, SeekOrigin.Begin); results=sr.ReadToEnd(); sr.Close(); return results; } public static object SoapDeserialize(string soap) { object o; Stream stream=new MemoryStream(Encoding.UTF8.GetBytes(soap)); SoapFormatter formatter=new SoapFormatter(); o=formatter.Deserialize(stream); stream.Close(); return o; } } To use : private void SerializeMyself() { string serialized=Serialization.SoapSerialize(this); // call the UploadToDatabaseFunction(serialized); } private MyObjectType Deserialize()//summarized. You could make this more flexible and generic by eliminating the //cast or passing in the type, etc,. { //string serialized=GetObjectFromDatabaseFunction(some identifier); return (MyObjectType) Serialization.SoapDeserialize(serialized); } Steve Holak Senior Software Architect Brokerage Concepts IS Dept. 610-491-4879 email: [EMAIL PROTECTED] "Brent E. Rector" <[EMAIL PROTECTED] To: [EMAIL PROTECTED] > cc: Sent by: dotnet Subject: Re: [DOTNET] Object serialization to string representation discussion <[EMAIL PROTECTED] VELOP.COM> 05/20/2002 05:49 PM Please respond to dotnet discussion IMO, the SoapFormatter is a better choice because it can represent all serializable .NET types while the XML serializer is quite restricted as to the types it supports. Especially if I correctly understood he intends to save the string dta to a database and, I assume, rehydrate it later on a .NET system. -- Brent Rector, .NET Wise Owl Demeanor for .NET - an obfuscation utility http://www.wiseowl.com/Products/Products.aspx -----Original Message----- From: franklin gray [mailto:[EMAIL PROTECTED]] Sent: Monday, May 20, 2002 2:45 PM To: [EMAIL PROTECTED] Subject: Re: [DOTNET] Object serialization to string representation or doing something like this.... Public Function GetXML() as string Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(YOUROBJECTTYPEHERE)) Dim writer As New System.IO.StringWriter() Dim Obj As YOUROBJECTTYPEHERE Obj = Me serializer.Serialize(writer, Obj) Dim s As String s = writer.ToString writer.Close() Return s End Function -----Original Message----- From: Brent E. Rector [mailto:[EMAIL PROTECTED]] Sent: Monday, May 20, 2002 4:35 PM To: [EMAIL PROTECTED] Subject: Re: [DOTNET] Object serialization to string representation Well, you are using the "Binary" formatter to write the state of your object to the stream. But you subsequently try and read the binary data as a string. You'd have better luck using the SoapFormatter. -- Brent Rector, .NET Wise Owl Demeanor for .NET - an obfuscation utility http://www.wiseowl.com/Products/Products.aspx -----Original Message----- From: Steve Holak [mailto:[EMAIL PROTECTED]] Sent: Monday, May 20, 2002 2:13 PM To: [EMAIL PROTECTED] Subject: [DOTNET] Object serialization to string representation I'm trying a test function to serialize an object to a string (to eventually upload the string to a database for storage). The object serializes just fine to disk creating a Stream as a File.IO. What I'm encountering is trying to serialize to a MemoryStream and reading it back with a StreamReader; in the code below the string "test" is always empty ("") The "this" reference is the object itself which contains the serialization implemetation. What am I missing, and is there a simpler way to return the string representation of a serialized object without writing to disk? Stream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream,this);//this is the object saving itself to the db. StreamReader sr =new StreamReader(stream); sr.BaseStream.Seek(0, SeekOrigin.Begin); //test always shows "" string test=sr.ReadToEnd(); stream.Close(); TIA Steve Holak Senior Software Architect Brokerage Concepts IS Dept. 610-491-4879 email: [EMAIL PROTECTED] You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.