- PR -

Serialize Deserializeについて。

1
投稿者投稿内容
はたけ
常連さん
会議室デビュー日: 2006/02/08
投稿数: 27
投稿日時: 2006-02-08 19:29
はじめまして。

表題のSerialize Deserializeですが、
ファイルの作成を行わず、使用することが出来ないのでしょうか?

やりたいことは、
Serializeにて、メモリ上(Stringの中に展開)でXMLを作成し、Deserializeにてそれを読み込むことです。

オブジェクトのシリアライズを行った状態で、
そのXMLデータを送信する事を考えていますので、
ファイル化にすることは無駄な処理になってしまいます。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-02-08 20:32
はたけさん、こんばんは。

引用:

表題のSerialize Deserializeですが、
ファイルの作成を行わず、使用することが出来ないのでしょうか?


出来ます。
例えば、こんな感じ↓で。

コード:
<Serializable()> _
Public Class Class1
    Public Number As Integer
    Public Text As String

    <STAThread()> _
    Public Shared Sub Main()
        Dim C As Class1 = New Class1

        C.Number = 8
        C.Text = "hogehoge"

        Dim XSer As XmlSerializer = New XmlSerializer(GetType(Class1))
        Dim SBldr As Text.StringBuilder = New Text.StringBuilder
        Dim SWtr As IO.StringWriter = New IO.StringWriter(SBldr)
        XSer.Serialize(SWtr, C)
        SWtr.Close()

        C = Nothing

        Dim txt As String = SBldr.ToString()
        Dim buf() As Byte = System.Text.Encoding.Unicode.GetBytes(txt)
        Dim MStrm As IO.MemoryStream = New IO.MemoryStream(buf)
        C = CType(XSer.Deserialize(MStrm), Class1)
        MStrm.Close()
    End Sub
End Class

Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-02-08 20:37
こんにちは。

引用:

はたけさんの書き込み (2006-02-08 19:29) より:

表題のSerialize Deserializeですが、
ファイルの作成を行わず、使用することが出来ないのでしょうか?

やりたいことは、
Serializeにて、メモリ上(Stringの中に展開)でXMLを作成し、Deserializeにてそれを読み込むことです。

オブジェクトのシリアライズを行った状態で、
そのXMLデータを送信する事を考えていますので、
ファイル化にすることは無駄な処理になってしまいます。



.NET(C#またはVB.NET)の話ですよね!?もちろん可能でしょう。

XML形式でシリアライズ・逆シリアライズするには、SoapFormatterクラスを使えば可能でしょう。
メモリ上に展開するには、MemoryStreamクラスを使えばできそうです。
またソケットを使って送信するのであれば、直接NetworkStreamクラスを使ってもよいのではないでしょうか。

でも、どうせなら.NET Remotingを使ったほうが楽な気がしますけれども…どうでしょうか。
はたけ
常連さん
会議室デビュー日: 2006/02/08
投稿数: 27
投稿日時: 2006-02-08 22:23
サンプルコードありがとうございました。

無事動作させることが出来ました事を報告します。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)