|
分類:[VB.NET]
分類:[VB.NET]
はじめまして Ashといいます。 VB.NET初めて3日の初心者ですので説明不足な点があればご指摘お願いします。
オブジェクトの内容をXMLファイル(シリアライズ、デシリアライズ) にしようと考えて、サンプルなど調べてコーディングは出来たのですが、 その処理を使いまわせるようにするためにクラスにしようと考えています。
以下がサンプルを元に作った処理です。 (説明のために左に行番号をつけています。)
1: Private Sub serializeSample() 2: Dim sample As Sample = New Sample 3: sample.para1 = "テスト" 4: sample.para2 = 1 5: Dim serializer As XmlSerializer = New XmlSerializer(GetType(Sample)) 6: Dim stream As FileStream = New FileStream(Application.StartupPath 1: & "\test.xml", FileMode.Create) 7: Try 8: serializer.Serialize(stream, person) 9: Finally 10: stream.Close() 11: End Try 12: End Sub 13: 14: Private Sub deserializeSample() 15: Dim sample As Sample 16: Dim serializer As XmlSerializer = New XmlSerializer(GetType(Person)) 17: Dim stream As FileStream = New FileStream(Application.StartupPath & "\test.xml", FileMode.Open) 18: Try 19: sample = CType(serializer.Deserialize(stream), Sample) 20: Finally 21: stream.Close() 22: End Try 23: End Sub
serializeSample()の5〜11をシリアライズ用メソッド deserializeSample()の16〜22をデシリアライズ用メソッド にしようと考えて、Sampleクラスのインスタンス(sample)とファイル名を メソッドの引数として渡して処理を書いていますが、ここで問題が発生しました。
既存の処理で言うところの19行目の処理のCTypeの第2引数が何の型で メソッドに渡してあげれば良いのかわかりませんでした。
今回作成しているメソッドは、インスタンス(sample)をObject型として 渡しているので「CType」をしなくても「serializer.Deserialize(stream)」 の戻り値をそのままObject型で渡した引数に入れることで処理は動くのですが、 元々参考にしていたプログラムやその他どこのサンプルを見ても、この 部分はCTypeでキャスト(?)しているので、後々何か問題が出てくる のではないかと不安です。
そこで以下の疑問点があり、教えていただければと思い投稿しました。
1.「CType」の第2引数をメソッドの引数として渡すことは可能か? 2.1の疑問が可能ならばどのようにすれば可能なのか? 3.そもそも「CType」する必要がないのか?
以上、宜しくお願い致します。
|