End Set
End Property
Public Property DrawDate() As DateTime
Get
Return _drawDate
End Get
Set(ByVal value As DateTime)
_drawDate = value
End Set
End Property
Public Property Numbers() As Integer()
Get
Return _numbers
End Get
Set(ByVal value As Integer())
_numbers = value
End Set
End Property
Private _bonus As Integer
Private _drawDate As DateTime
Private _numbers As Integer()
End Class
Ticket is plain…vanilla data class。 However; the bolded parts deserve an explanation。 The
first bolded part is a set of angled brackets surrounding the identifier Serializable; which
represents a attribute。 In ; you have the ability to describe types; methods; and so on。
…………………………………………………………Page 296……………………………………………………………
274 CH AP T E R 1 0 ■ L E A R N I N G A B OU T P E R S IS TE N CE
Attributes are descriptions that are used in a particular context。 As opposed to the identifiers
Public and MustInherit; which are descriptions that fundamentally describe how a type will
behave; the Serializable attribute describes the behavior of a type in a specific context—when
the object is to be converted from memory to a data stream and vice versa。 Fundamental descrip
tions are important to the runtime; whereas attributes are generally not important
to the runtime; but important to libraries that the runtime will execute。
■Note Serialization is the process of turning an object into a format that can be saved or sent over the
network。 Deserialization is the process of retrieving the serialized object。
The Serializable attribute describes the ability to serialize the type as it is declared。 When
Ticket is converted into a binary stream; the programmer does not need to do anything other
than pass an instance to the data stream。 The data stream libraries handle all of the other details。
In the declaration of Ticket; the parameterless constructor has been bolded to emphasize
that this type of constructor is necessary when converting a data stream into an object instance。
When binary streams restore types; they instantiate an empty object and then assign the data
members。 Thus; when an object is created; a parameterless constructor is needed。
Converting a Text Stream into a Binary Stream
To convert the stream from text to binary involves breaking apart the text stream; instantiating
a Ticket instance; assigning the data members; and saving the instance to the binary stream。
All of these steps are performed in the following source code (you’ll need a reference to
LottoLibrary in Text2Binary)。
Imports System。IO
Imports System。Runtime。Serialization。Formatters。Binary
Imports System。Text
Public Class LottoTicketProcessor : Implements IText2BinaryProcessor
Public Sub Process(ByVal reader As TextReader; ByVal writer As Stream) _
Implements IText2BinaryProcessor。Process
Dim retval As StringBuilder = New StringBuilder()
Do While reader。Peek() …1
Dim lineOfText As String = reader。ReadLine()
Dim splitUpText As String()= lineOfText。Split(New Char() {〃 〃c})
Dim dateSplit As String() = splitUpText(0)。Split(New Char() {〃。〃c})
Dim ticket As LottoLibrary。Ticket = _
New LottoLibrary。Ticket( _
New DateTime( _
Integer。Parse(dateSplit(0)); _
Integer。Parse(dateSplit(1)); _
Integer。Parse(dateSplit(2))); _
…………………………………………………………Page 297……………………………………………………………
CH A PT E R 1 0 ■ L E A R N I N G A B O U T P E R S IS T E N CE 275
New Integer() { _
Integer。Parse(splitUpText(1)); _
Integer。Parse(splitUpText(2)); _
Integer。Parse(splitUpText(3)); _
Integer。Parse(splitUpText(4)); _
Integer。Parse(splitUpText(5)); _
Integer。Parse(splitUpText(6)) }; _
Integer。Parse(splitUpText(7)))
Dim formatter As BinaryFormatter = New BinaryFormatter()
formatter。Serialize(writer; ticket)
Loop
End Sub
End Class
The code splits the text stream by reading a line of text and then splitting apart the fields。
The split…apart fields are then converted into numbers by using the Integer。Parse() method。
This process of splitting and conversion is called marshaling data。 Marshaling is a technical
term that means to convert a type from one medium to another。
We manage the text marshaling; but manages the binary marshaling; which is still there
behind the scenes。 The System。Runtime。Serialization。Formatters。Binary。BinaryFormatter type
manages marshaling of the Ticket instance to the binary stream。 The Serializable attribute
is used by the BinaryFormatter as an indicator that the Ticket type is allowed to be serialized and
deserialized。 In essence; converting from a text stream to a binary stream means to marshal a
text…defined ticket into a …defined ticket; and that is then marshaled into a binary…defined
ticket。
Converting a Binary Stream into a Text Stream
Converting a
小说推荐
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 最新章:第295章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- VC语言6.0程序设计从入门到精通
- -Page 1-Visual C 6.0 程序设计从入门到精通求是科技 王正军 编著
- 最新章:第136章
- SQL 21日自学通(V3.0)(PDF格式)
- -Page 1-SQL 21 日自学通(V1.0 翻译人 笨猪目录目录 1译者的话 14第一周概貌 16从这里开始 16
- 最新章:第170章
- 2008年青年文摘精编版
- 作者:中国青年出版社“初恋”的惩罚.作者:凡 凡 文章来源《真情》2005年第4期 点击数:6608 更新时间:2005-6-5过了年,我就十八岁了。离高考只剩下四个多月了。这一段,班里的男女生相互间递纸条、写情书、约会等地下活动慢慢的多了起来。我这个“尖子生”也突然感到了不安、慌乱,并且自责。不知
- 最新章:第230章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章