- PR -

System.Data.DataSet Type取得

1
投稿者投稿内容
toppo
ベテラン
会議室デビュー日: 2003/10/28
投稿数: 89
お住まい・勤務地: 東京・池袋
投稿日時: 2004-09-07 15:19
toppoです。

C# で
string typeString = "System.Data.DataSet";
Type type = Type.GetType( typeString );
でtypeにnullが返却されてしまいます。

"System.Int32" などは問題なくTypeが取得できます。

"System.Data.DataSet"の他にも
"System.Data.DataRow"なども取得できません。

ちなみに、
Type type = typeof( System.Data.DataSet);
であれば、問題なく取得できます。

文字列から、Typeを取得できる方法が分かる方がいれば、
よろしくお願いします。

以上。



ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2004-09-07 18:25
簡単に言えば、"System.Data.DataSet"だけでは、一意ではありません。アセンブリ、エビデンスを含め完全に一致させてあげないと、特定できない(見つけることが出来ない)ということです(Type.GetType()メソッドの検索方法はドキュメントに書いてないので解りませんが…)。

コードとしては、
コード:

Assembly assm = Assembly.Load("name, version, culture, public key token");
Type type = assm.GetType("type full name");



たぶんこんなかんじになると思います(動作未確認)。

ただ、まじめにやるとすごく大変なので、素直に typeof(System.Data.DataSet) とやるほうが賢明です。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-09-07 19:13
System.Dataアセンブリに限定するのであれば、

System.Reflection.Assembly assembly = typeof(System.Data.DataTable).Assembly;
Type t = assembly.GetType("System.Data.DataSet");

typeofの中身は、System.Data内の任意のクラスをすればよい。

参考
http://www.atmarkit.co.jp/fdotnet/dotnettips/175createctrl/createctrl.html
1

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