C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

CTypeの第2引数(typename)の引数渡しの方法


(過去ログ 1 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■315 / inTopicNo.1)  CTypeの第2引数(typename)の引数渡しの方法
  
□投稿者/ Ash 二等兵(1回)-(2005/04/27(Wed) 10:22:20)

分類:[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」する必要がないのか?


以上、宜しくお願い致します。


0
引用返信 編集キー/
■316 / inTopicNo.2)  Re[1]: CTypeの第2引数(typename)の引数渡しの方法
□投稿者/ 中博俊 大尉(43回)-(2005/04/27(Wed) 11:29:37)
中博俊 さんの Web サイト

分類:[VB.NET] 

こんにちは中です。

使いまわす必要はまったくないです。
どのようにシリアライズさせるかはそのクラスに責任を持たせるなどのやり方を考えるべきで、シリアライズするたった数行を共通化することのメリットはちょっとだけ、でもデメリットは莫大です。

------------------------------------------------------
中博俊 MSMVP Visual Studio C# Since 2004/04-2006/03, MCP
http://naka.wankuma.com/
http://naka.wankuma.com/blog/
naka@wankuma.com


0
引用返信 編集キー/
■318 / inTopicNo.3)  Re[2]: CTypeの第2引数(typename)の引数渡しの方法
□投稿者/ Ash 二等兵(2回)-(2005/04/27(Wed) 12:06:10)

分類:[VB.NET] 

中博俊様 返事ありがとうございます。

「デメリットは莫大です。」というのが気になりました。
どのようなデメリットが考えられるのでしょうか?


後、メリット・デメリット抜きにしてもCTypeの第2引数の型を
自作メソッドに受け渡す方法がないのか気になってます。


0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -