2010年09月26日

現在実行中のメソッド名を得る

   Clip to Evernote   このエントリーをはてなブックマークに追加      
System.Reflection.MethodBase.GetCurrentMethod()は、現在実行中のメソッドを表す MethodBase オブジェクトを返します。

Name プロパティで、メソッド名を取得でき、DeclaringType はこのメンバーを宣言しているクラスを取得できます。

以下、C#の簡単な例です。


結果は、

button1_Click
Sample.Form1

と表示されます。
MethodBaseを受け取るメソッドを作成し、MethodBase.GetCurrentMethod() を引数に渡してあげれば、簡易トレースメソッドが出来そうです。   

Posted by gushwell at 23:19Comments(0)TrackBack(0)

2010年07月06日

あるオブジェクトが派生型かどうかを知りたい

   Clip to Evernote   このエントリーをはてなブックマークに追加      


というクラスがあった時に、
あるオブジェクトの型が、BaseClassの派生型かどうかを調べるコードをC#で書きたい場合がたまにあります。


だと、obj が BaseClassのインスタンスでも、この if 文が成り立ってしまうので宜しくないです。


だと、ちょっとダサい。
そんなときは、そのものずばりのメソッド IsSubclassOf を使います。

  
Posted by gushwell at 23:01Comments(0)TrackBack(1)

2010年01月31日

エントリ・ポイントを含むアセンブリ(Assemblyオブジェクト)を取得

   Clip to Evernote   このエントリーをはてなブックマークに追加      
以下は、現在実行されているアセンブリのバージョンを得るコードです。


GetName() というメソッド名が紛らわしいんですよね。
GetName()で返るのは、文字列ではなく、System.Reflection.AssemblyName クラスの インスタンスです。

GetExecutingAssembly の代わりに、GetEntryAssembly を使えば、 エントリポイント(Mainメソッド)を含むアセンブリの情報を取得できます。
クラスライブラリ側で、実行中のexeのアセンブリ情報を利用したい場合に使えます。
以下のコードは、バージョン情報を得るコードです。


もちろん、そのパス名や、アセンブリ表示名も取得できます。


  
Posted by gushwell at 23:39Comments(0)TrackBack(0)