- - PR -
Module キーワードで定義されたモジュール名の取得
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-27 11:19
こんにちは。
自分で書いたモジュール内で、Module キーワードで定義されたモジュール名を取得する方法を模索しています。ご存じの方がいらしたら是非ご教授願います。 ■やりたいこと Module hogehoge Public Sub hogeFunc() 'ここで "hogehoge" という文字列を取得したい End Sub End Module ■試したこと ・System.Diagnostics.StackTrace は、Exception オブジェクトが必要。 ・クラスではないので、Me 修飾子は使えない。 ・StackFrame( True ).GetFileName() などは、デバッグモードでしか機能しない。 ・StackFrame( True ).GetMethod().Module.Name は、実行ファイル名を返す。 などで、ズバリな方法が見つかりませんでした。 ■背景 すでにお気づきだと思いますが、トレースに生かそうと考えています。トレースの目的からすれば他の方法がいくらでもあると思いますが、今回は技術的な興味も含んでいるので、代替方法ではなくズバリな方法を探しています。 ■開発環境 WindowsXP Pro VB2005(VisualStudio2005) | ||||||||
|
投稿日時: 2007-07-27 11:42
リフレクション http://msdn2.microsoft.com/ja-jp/library/cxz4wk15(VS.80).aspx DOBON.NETさん−「Tips」−「リフレクション」 http://dobon.net/vb/ 一応、仕組みの性質から必要性、タイミングを考慮する必要があると思います。 今回の場合、場合によっては定数で記述したほうがよいという結論も十分ありえます。 | ||||||||
|
投稿日時: 2007-07-27 12:01
ごめん。この回答の意味と必要性がわからない。 どうやったら取得できるっていうの? 質問者はトレースに利用するとはっきり書いている。 で同じコードでアスペクトにやりたいんだろう。 リフレクションを使うにしても型名を動的に取る方法がないのだから無意味である。 っていうか質問者はその前提で質問しているようにしか思えないのだが。 | ||||||||
|
投稿日時: 2007-07-27 12:07
exception要らないよ
vb2003 で確認 stackframe取って、getmethodして、refrectedtype取って、name リリースモードも確認しました [ メッセージ編集済み 編集者: Jitta 編集日時 2007-07-27 12:14 ] | ||||||||
|
投稿日時: 2007-07-27 12:08
質問者のまったけです。
すみません、「試したこと」に Reflection が抜けていました。<(_ _)> Reflection.MethodBase.GetCurrentMethod.Name で取得できたのは "hogeFunc" です。今回欲しいのは "hogehoge" なのです、、、、。 | ||||||||
|
投稿日時: 2007-07-27 12:11
gdgdになりかけていますね。
まったけさんの試したことはほとんど正解に近いです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-07-27 12:13
ごめん。超ごめん。俺が勘違いしていた。○| ̄|_
| ||||||||
|
投稿日時: 2007-07-27 12:37
皆さん、ありがとうございます。
■Jitta 様 StackFrame( True ).GetMethod().ReflectedType.Name で取得できました。 リリースモードでの確認までしていただき、ありがとうございます。 ■じゃんぬねっと様 教えていただいたコードで取得できました。 二度手間をおかけしてしまい、申し訳なく思います。すみませんでした。 |