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

わんくま同盟

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

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


(過去ログ 41 を表示中)
■21604 / )  Objectから動的に型取得してキャスト処理
□投稿者/ 鶏唐揚 (228回)-(2008/07/05(Sat) 13:40:45)

分類:[VB.NET/VB2005] 

2008/07/05(Sat) 13:44:21 編集(投稿者)
[OS]XP SP3/Vista SP1
[VB]2005 SP1

お世話になっております。
今回はXMLシリアライズをメソッドで行う際の、DirectCastの第2引数のTypeを動的指定したい
というものです。

Public Function GetXMLData(ByVal XMLFile As String, ByRef DataCls As Object) As Boolean
    Dim serializer As XmlSerializer
    Dim fs As FileStream

    Try
        If File.Exists(XMLFile) Then
            serializer = New XmlSerializer(DataCls.GetType)
            fs = New FileStream(XMLFile, FileMode.Open)

            'XMLファイルから読み込み、逆シリアル化する
            DataCls = DirectCast(serializer.Deserialize(fs), ここを動的にしたい)

            fs.Close()
        End If
...略
End Function

しかし、定義済みの型を指定するのが通常で、実行時どころかコンパイルエラーなので
無理な話だと考えてます(その他メソッドにType型引数を追加し、そのTypeを指定したりもしたけど無理)

最悪はVBお得意の暗黙型変換にて解決できるのですが、警告にも出てきて気持ち悪いので
できれば明示的型変換を行いたいと思います。
DirectCastではなくても、Object変数から(または型名を指す文字列から)型取得&型指定してキャストする方法があれば
ご教示ください。よろしくお願いします。

返信 編集キー/


管理者用

- Child Tree -