|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Challenge? [De-]Serialise a class derived from DataTable.to anyone brave enough to take it up. In VB'2005, can anyone write me a class that inherits from System.Data.DataTable, add it to a System.Data.DataSet (a /normal/ one, /not/ a subclass), serialise the whole lot to, say, a file and then deserialise the whole shooting match back into the classes they started with? (All my attempts seem to lose all the Type information on the DataTable-derived calss in the serialisation process). I've tried to do this repeatedly (in VB'2003 and '2005) with no success. I'm not looking for the page and pages of XML Schema "stuff" created by a Strongly-typed Dataset (although I'm afraid that's where I'll wind up). I'm /trying/ to get a Strongly-Typed DataTable that can exist within any old DataSet. Is this possible in VB'2005? (It wasn't in '2003). TIA, Phill W. Have you tried binary serialization ?
i use this to serialize anny .Net object to a sql server database ( Classes , structures ) when i deserialize them i get them back in the original state . <code > Imports System.Runtime.Serialization.Formatters.Binary add this attribute to the serializable class <Serializable()> _ --- methods ''' <summary> ''' maakt van een byte array een object ''' </summary> ''' <param name="Argdata">de ruwe binaire data </param> ''' <returns></returns> Private Function DeSerialize(ByVal Argdata() As Byte) As Object Dim m As New MemoryStream(Argdata) Dim b As New BinaryFormatter() m.Seek(0, 0) 'start Return b.Deserialize(m) End Function ''' <summary> ''' Maakt van een Object (foo) een byte array . ''' </summary> ''' <param name="Argdata">argdata als foo object</param> ''' <returns></returns> Private Function Serialize(ByVal Argdata As Object) As Byte() Dim b As New BinaryFormatter Dim m As New MemoryStream b.Serialize(m, Argdata) m.Seek(0, 0) 'start Return m.ToArray End Function </code > With these methods i could store ( until sofar ) every .Net object in SQL server ( you could also write the binary data out to a file and read it back from a file ) I hope this helps you in the right direction regards Michel Posseth [MCP] Show quoteHide quote "Phill W." wrote: > OK, I've asked nicely before; now I'm going to throw down the gauntlet > to anyone brave enough to take it up. > > In VB'2005, can anyone write me a class that inherits from > System.Data.DataTable, add it to a System.Data.DataSet (a /normal/ one, > /not/ a subclass), serialise the whole lot to, say, a file and then > deserialise the whole shooting match back into the classes they started > with? (All my attempts seem to lose all the Type information on the > DataTable-derived calss in the serialisation process). > > I've tried to do this repeatedly (in VB'2003 and '2005) with no success. > > I'm not looking for the page and pages of XML Schema "stuff" created by > a Strongly-typed Dataset (although I'm afraid that's where I'll wind > up). I'm /trying/ to get a Strongly-Typed DataTable that can exist > within any old DataSet. > > Is this possible in VB'2005? (It wasn't in '2003). > > TIA, > Phill W. > When i rethink this ....
i believe this is never going to work with a standard dataset as the deserialize method needs a type that is the same as the serialized object and a standard dataset type is not the same as a dataset with a custom table , so the deserialization will probably crash on the custom table ... so i guess you can only do this with standard datatypes or a custom wrapper I for instance write my own custom datat types to a database however when i retrieve the values for serialization i can use this custom type as my serialization template in the case of a dataset that holds a custom datatable you miss the mask for this custom datatable for correct deserialization . Hmmm , :-| ,,, Interesting ....... i guess that if you used a class as wrapper , with an object array to hold the custom datatables you would not have anny problem, this way you should first cast the wrapper wich would give you the class with datatables as objects , now you could cast these objects to your custom tables Well i guess i picked up the gloves , but need to throw the towel in the ring for the original task :-) regards Michel Show quoteHide quote "Michel Posseth [MCP]" wrote: > Have you tried binary serialization ? > > > i use this to serialize anny .Net object to a sql server database ( Classes > , structures ) when i deserialize them i get them back in the original > state . > > > <code > > Imports System.Runtime.Serialization.Formatters.Binary > > add this attribute to the serializable class > <Serializable()> _ > > --- methods > > ''' <summary> > ''' maakt van een byte array een object > ''' </summary> > ''' <param name="Argdata">de ruwe binaire data </param> > ''' <returns></returns> > Private Function DeSerialize(ByVal Argdata() As Byte) As Object > Dim m As New MemoryStream(Argdata) > Dim b As New BinaryFormatter() > m.Seek(0, 0) 'start > Return b.Deserialize(m) > End Function > ''' <summary> > ''' Maakt van een Object (foo) een byte array . > ''' </summary> > ''' <param name="Argdata">argdata als foo object</param> > ''' <returns></returns> > Private Function Serialize(ByVal Argdata As Object) As Byte() > Dim b As New BinaryFormatter > Dim m As New MemoryStream > b.Serialize(m, Argdata) > m.Seek(0, 0) 'start > Return m.ToArray > End Function > > </code > > > > With these methods i could store ( until sofar ) every .Net object in SQL > server > ( you could also write the binary data out to a file and read it back > from a file ) > > > I hope this helps you in the right direction > > regards > > Michel Posseth [MCP] > > > "Phill W." wrote: > > > OK, I've asked nicely before; now I'm going to throw down the gauntlet > > to anyone brave enough to take it up. > > > > In VB'2005, can anyone write me a class that inherits from > > System.Data.DataTable, add it to a System.Data.DataSet (a /normal/ one, > > /not/ a subclass), serialise the whole lot to, say, a file and then > > deserialise the whole shooting match back into the classes they started > > with? (All my attempts seem to lose all the Type information on the > > DataTable-derived calss in the serialisation process). > > > > I've tried to do this repeatedly (in VB'2003 and '2005) with no success. > > > > I'm not looking for the page and pages of XML Schema "stuff" created by > > a Strongly-typed Dataset (although I'm afraid that's where I'll wind > > up). I'm /trying/ to get a Strongly-Typed DataTable that can exist > > within any old DataSet. > > > > Is this possible in VB'2005? (It wasn't in '2003). > > > > TIA, > > Phill W. > > Michel Posseth [MCP] wrote:
> When i rethink this .... And therein lies my problem... :-(> i believe this is never going to work with a standard dataset as the > deserialize method needs a type that is the same as the serialized > object and a standard dataset type is not the same as a dataset with > a custom table, so the deserialization will probably crash on the > custom table ... > > so i guess you can only do this with standard datatypes or a custom wrapper .. . . > in the case of a dataset that holds a custom datatable you miss the mask for > this custom datatable for correct deserialization . > Hmmm , :-| ,,, Interesting ....... "Veeerry interesting" (says the german chap in the helmet hiding behind the potted plant) "but Stupid"... Why should a class derived from DataTable [de-]serialise any differently to any other class? > Well i guess i picked up the gloves , but need to throw the towel in the Ah well; at least I have a nice new towel in exchange for my old > ring for the original task :-) gloves... :-) Thanks anyway. Phill W.
C# help!!!
LsaOpenPolicy : Attempted to read or write protected memory Cant seem to filter Dataset table by a value Scope misunderstanding Database creation problems DataGridView Edit row marker regex.replace and trim set itemheight in listbox Getting XML Version difference between MyBase.Closing and MyBase.FormClosing |
|||||||||||||||||||||||