DOBON.NETプログラミング道掲示板

■34686 / 親記事)  インスタンスの型を文字列で指定したい
  
□投稿者/ 未熟者 一般人(1回)-(2021/04/02(Fri) 10:56:17)
  • アイコン環境/言語:[Windows10/VB.NET(Visual Studio 2019)/.NET Framework 4.6.2] 
    分類:[.NET] 

    このような掲示板で初めて質問するのため、わかりづらい内容になっていたらすみません。
    3日ほど悩んでいるのですが答えが見つからず、どなたかにご教授願いたく質問させていただきます。

    ■したいこと
    変数の型を文字列で指定したい。

    例としてClassAというクラスのインスタンスを生成する場合、本来なら
    dim a as ClassA
    のような記述で宣言するところ、"ClassA"という文字列を利用して
    変数の型を指定したいのです。

    dim t as Type = Type.GetType("ClassA")
    dim a as t

    上記の記述でいけるかと思いましたが「型"t"が定義されていません」というエラーになってしまいました。これではだめなんですね…。
    変数の型宣言を文字列で行うことはできないのでしょうか?


マルチポストを報告
違反を報告
引用返信 削除キー/
■34687 / ResNo.1)  Re[1]: インスタンスの型を文字列で指定したい
□投稿者/ 魔界の仮面弁士 大御所(1327回)-(2021/04/02(Fri) 12:14:56)
  • アイコンNo34686に返信(未熟者さんの記事)
    > 例としてClassAというクラスのインスタンスを生成する場合、

    インスタンスの生成方法は、クラスによって様々です。

    たとえば、New する際に 1 つ以上の「引数」指定が必要なものや、
     Dim p As New System.Net.IPAddress(New Byte() {192, 168, 0, 1})
    New でインスタンス化するのではなく、共有メソッドで生成するものもあります。
     Dim p = System.Net.IPAddress.Parse("192.168.0.1")

    > dim t as Type = Type.GetType("ClassA")
    > dim a as t

    そのように書けるのは、型パラメーターを用いた場合だけですね。
     Public Shared Function Create(Of T As New)() As T
      Return New T()
     End Function

    System.Type を元に生成したいのであれば、
    Activator.CreateInstance メソッドを試してみてください。
違反を報告
引用返信 削除キー/
■34688 / ResNo.2)  Re[2]: インスタンスの型を文字列で指定したい
□投稿者/ 未熟者 一般人(2回)-(2021/04/05(Mon) 12:46:52)
  • アイコン早速のアドバイスを頂きありがとうございました。
    またお礼が遅くなり申し訳ありません。

    恥ずかしながら「型」と「型パラメータ」の違いもあいまいだったため、もっと勉強しなくてはと感じています。
    頂いたヒントを元にしたいことを実現する方法を調べてみます。
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -