- PR -

[ ASP.NET ] クラス名の取得方法

投稿者投稿内容
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-11-05 14:37
こんにちわ。VB.NETを使ってASP.NETの開発をしております。

現在、クラス名を取得するような仕掛けを作りたいと思っているのですが
実現方法が見えてきません。

WindowsフォームのようにAPI関数でってわけにはいかなさそうなんですが、なんとか取得できる方法はないでしょうか?

ちなみに取得するクラス名は起動中のページのクラス名です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-05 15:00
object.GetType.ToString とか?
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-11-05 15:18
jittaさんありがとうございます。

言い方が悪かったようなので補足させてください。
クラス名というのは、VBファイルの冒頭部にできる

Public Class クラス名

の部分だったのです・・・;;

ついでにいうとイベント名や関数名も取得したいのですが、どう考えても無理っぽいですね・・・。
うーむ。。。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-05 15:31
引用:

KIMERAさんの書き込み (2003-11-05 15:18) より:

クラス名というのは、VBファイルの冒頭部にできる

Public Class クラス名

の部分だったのです・・・;;


 やってみました?objectは、そのクラスのインスタンス。Objectクラス(全てのクラスの親)にGetTypeメソッドがあります。これによって、クラスがとれます。このクラスは、
If GetType(String) Is Sender.GetType Then
などのように、クラスの比較に使用することができます。
 ToStringメソッドは、対象を判別することができる文字列を取り出します。クラスという対象を判別することができる文字列なので、クラス名が出てくると思います。

 というか、他のスレッドで、
Try
 処理
Catch ex As Exception
 MessageBox.Show(ex.Message, ex.GetType.ToString)
End Try
とやれば、例外メッセージとそのクラスが表示できる、と書いているし。。。


それとも、「このファイルで定義されているクラス」という意味だったのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-05 15:37
引用:

KIMERAさんの書き込み (2003-11-05 15:18) より:

ついでにいうとイベント名や関数名も取得したいのですが、どう考えても無理っぽいですね・・・。


 インテリセンスで表示されるのだから、無理ではないでしょう。ということで、Assemblyクラスをあたってみましたが、GetTypesメソッドの説明に、なにやらそれっぽいことが。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-05 15:37 ]
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-11-05 15:41
何度もすいません。
一応、確認はさせていただいてます。

Me.GetType.ToString

としたのが悪かったのでしょうか、VB側でクラス名称を変更しても取得する値に反映されませんでした。
というのも、Me自体がVBファイルを指しているんではなく、画面部分のことを指しているからですよね?

違っていたらすいません;;
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-05 16:41
 おお!!これは失礼。MyPageというクラスが、"ASP.MyPage_aspx"とでましたね。他のクラスは名前空間を全て解決して表示されるのに。名前空間も違うし。。。

 っと、思い出しました。.aspxファイルの方を見てください。HTMLコードを表示して、1行目か、その近辺に、『<%@ 〜〜 Inherits="クラス名"%>』という行がないでしょうか。こっち、HTMLページのクラスがとれているかもしれません。それで、"ASP.ファイル名_aspx"となっているのかな?そういえば、VS.NETではビハインドコードは.vbなり.csなりに分けてコーディングしますが、.aspxファイルにまとめて記述することもできますよね。.NET Frameworkでは、上位のクラスや実装するインタフェースで受けても、インスタンスは元のクラスのクラス情報を保持しているので、GetTypeで取り出せるのは元のクラスなのです。例えば、
Dim c As IDbConnection = New OleDb.OleDbConnection
とすると、cはIDbConnectionクラスの変数ですが、インスタンスはOleDbconnectionクラスのままなのです。したがって、インスタンスに対して問い合わせる、c.GetType.ToStringは、System.Data.OleDb.OleDbConnectionを返します。

う〜ん、何かいい方法はないかな??
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2003-11-06 01:54
コード:

GetType().BaseType.ToString()



ではどうですか?
正直条件によって動作が色々と変わりそうな難しい問題ですけど。

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