![]() |
Platforms, Frameworks & Libraries »
.NET Framework »
Utilities
Intermediate
License: The GNU Lesser General Public License
Object Reader and WriterBy SAPikachuReads/Writes an object from/to a stream |
VB (VB9.0), .NET (.NET2.0, .NET3.0, .NET3.5), WinXP, Vista
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
Some days ago, I was writing a program that needed to parse a truetype font. I found that there is no class to fill a structure from a stream. So I wrote one myself.
Basically, if you only want to read/write a structure with the following conditions...
... it will be very easy, like this:
'reader can be BinaryReader or Stream
result = ObjectReader(Of SomeStruct).Read(reader)
'writer can be BinaryWriter or Stream
ObjectWriter(Of SomeStruct).Write(obj, writer)
Arrays and non-primitive types can also be read/written, but you need to add some attribute to the field. Here is an example:
<System.Runtime.InteropServices.StructLayout_
(Runtime.InteropServices.LayoutKind.Sequential)> _
Public Structure TestStruct
Public aInt As Integer
Public bInt64 As Long
<ArraySize(16)> _
Public bArr As Byte()
<ArraySize(4)> _
Public dIArr As Integer()
<ObjectReaderWriterInclude()> _
Public eNested As TestStruct3
Public fNotInclude As TestStruct2 ' this field will not be read/written
<ObjectReaderWriterInclude()> _
Public gNested2 As TestStruct2
<ArraySize(2), ObjectReaderWriterInclude()> _
Public hNestedArray As TestStruct2()
End Structure
<System.Runtime.InteropServices.StructLayout_
(Runtime.InteropServices.LayoutKind.Sequential)> _
Public Structure TestStruct2
Public aB As Byte
<ArraySize(10)> _
Public bBArr As Byte()
End Structure
<System.Runtime.InteropServices.StructLayout_
(Runtime.InteropServices.LayoutKind.Sequential)> _
Public Class TestStruct3
Public aInt As Integer
<ObjectReaderWriterInclude()> _
Public bNested As TestStruct2
End Class
| You must Sign In to use this message board. | ||||||||||||||||||||||
|
||||||||||||||||||||||
|
||||||||||||||||||||||
|
||||||||||||||||||||||
|
||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 23 Mar 2008 Editor: Deeksha Shenoy |
Copyright 2008 by SAPikachu Everything else Copyright © CodeProject, 1999-2010 Web21 | Advertise on the Code Project |