- - PR -
[ ASP.NET ] クラス名の取得方法
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-11-05 14:37
こんにちわ。VB.NETを使ってASP.NETの開発をしております。
現在、クラス名を取得するような仕掛けを作りたいと思っているのですが 実現方法が見えてきません。 WindowsフォームのようにAPI関数でってわけにはいかなさそうなんですが、なんとか取得できる方法はないでしょうか? ちなみに取得するクラス名は起動中のページのクラス名です。 | ||||
|
投稿日時: 2003-11-05 15:00
object.GetType.ToString とか?
| ||||
|
投稿日時: 2003-11-05 15:18
jittaさんありがとうございます。
言い方が悪かったようなので補足させてください。 クラス名というのは、VBファイルの冒頭部にできる Public Class クラス名 の部分だったのです・・・;; ついでにいうとイベント名や関数名も取得したいのですが、どう考えても無理っぽいですね・・・。 うーむ。。。 | ||||
|
投稿日時: 2003-11-05 15:31
やってみました?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 とやれば、例外メッセージとそのクラスが表示できる、と書いているし。。。 それとも、「このファイルで定義されているクラス」という意味だったのでしょうか? | ||||
|
投稿日時: 2003-11-05 15:37
インテリセンスで表示されるのだから、無理ではないでしょう。ということで、Assemblyクラスをあたってみましたが、GetTypesメソッドの説明に、なにやらそれっぽいことが。 [ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-05 15:37 ] | ||||
|
投稿日時: 2003-11-05 15:41
何度もすいません。
一応、確認はさせていただいてます。 Me.GetType.ToString としたのが悪かったのでしょうか、VB側でクラス名称を変更しても取得する値に反映されませんでした。 というのも、Me自体がVBファイルを指しているんではなく、画面部分のことを指しているからですよね? 違っていたらすいません;; | ||||
|
投稿日時: 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を返します。 う〜ん、何かいい方法はないかな?? | ||||
|
投稿日時: 2003-11-06 01:54
ではどうですか? 正直条件によって動作が色々と変わりそうな難しい問題ですけど。 | ||||
