2010年09月26日
現在実行中のメソッド名を得る
System.Reflection.MethodBase.GetCurrentMethod()は、現在実行中のメソッドを表す MethodBase オブジェクトを返します。
Name プロパティで、メソッド名を取得でき、DeclaringType はこのメンバーを宣言しているクラスを取得できます。
以下、C#の簡単な例です。
結果は、
button1_Click
Sample.Form1
と表示されます。
MethodBaseを受け取るメソッドを作成し、MethodBase.GetCurrentMethod() を引数に渡してあげれば、簡易トレースメソッドが出来そうです。
Name プロパティで、メソッド名を取得でき、DeclaringType はこのメンバーを宣言しているクラスを取得できます。
以下、C#の簡単な例です。
結果は、
button1_Click
Sample.Form1
と表示されます。
MethodBaseを受け取るメソッドを作成し、MethodBase.GetCurrentMethod() を引数に渡してあげれば、簡易トレースメソッドが出来そうです。
2010年07月06日
あるオブジェクトが派生型かどうかを知りたい
というクラスがあった時に、
あるオブジェクトの型が、BaseClassの派生型かどうかを調べるコードをC#で書きたい場合がたまにあります。
だと、obj が BaseClassのインスタンスでも、この if 文が成り立ってしまうので宜しくないです。
だと、ちょっとダサい。
そんなときは、そのものずばりのメソッド IsSubclassOf を使います。
2010年01月31日
エントリ・ポイントを含むアセンブリ(Assemblyオブジェクト)を取得
以下は、現在実行されているアセンブリのバージョンを得るコードです。
GetName() というメソッド名が紛らわしいんですよね。
GetName()で返るのは、文字列ではなく、System.Reflection.AssemblyName クラスの インスタンスです。
GetExecutingAssembly の代わりに、GetEntryAssembly を使えば、 エントリポイント(Mainメソッド)を含むアセンブリの情報を取得できます。
クラスライブラリ側で、実行中のexeのアセンブリ情報を利用したい場合に使えます。
以下のコードは、バージョン情報を得るコードです。
もちろん、そのパス名や、アセンブリ表示名も取得できます。
GetName() というメソッド名が紛らわしいんですよね。
GetName()で返るのは、文字列ではなく、System.Reflection.AssemblyName クラスの インスタンスです。
GetExecutingAssembly の代わりに、GetEntryAssembly を使えば、 エントリポイント(Mainメソッド)を含むアセンブリの情報を取得できます。
クラスライブラリ側で、実行中のexeのアセンブリ情報を利用したい場合に使えます。
以下のコードは、バージョン情報を得るコードです。
もちろん、そのパス名や、アセンブリ表示名も取得できます。



