ASP.NETでの呼び出しメソッド名の取得
3146 ワード
この例ではASPについて述べる.NETでは呼び出しメソッド名を取得するテクニックを実装する.皆さんの参考にしてください.具体的な実現方法は以下の通りである.
ログの書き込み機能では、ログ呼び出し元のモジュール名、ネーミングスペース名、クラス名、メソッド名を記録する必要があります.反射(反射についてはパフォーマンスに注意してください)を使用したいのですが、具体的にはどのモジュール名が分からないので、検索して、以下のように整理します.
適切なネーミングスペースを追加する必要があります.
現在のメソッド名のみを取得する場合は、次のコードを使用します.
ただし、一般的には、このログ・メソッドを取得する呼び出し元であるため、次のコードを使用する必要があります(このメソッドはデモのみです).
この点について興味深いのはMainの呼び出し元です
に合格
知ることができるNETプログラムの実行順序:
そしてメソッドMainに入ります.
また、MethodBaseクラスから他にも多くの属性を得ることができ、自分でSystemにナビゲートすることができる.Reflection.MethodBaseが表示します.反射を使用すると、クラスのすべてのプロパティ名、メソッド名、メンバー名を巡回できます.この興味深い例の1つは、反射によって変数値を変数名自体に変換することです.
皆さんのaspについてお話ししたいと思います.Netプログラミングが役立ちます.
ログの書き込み機能では、ログ呼び出し元のモジュール名、ネーミングスペース名、クラス名、メソッド名を記録する必要があります.反射(反射についてはパフォーマンスに注意してください)を使用したいのですが、具体的にはどのモジュール名が分からないので、検索して、以下のように整理します.
適切なネーミングスペースを追加する必要があります.
using System;
using System.Diagnostics;
using System.Reflection;
現在のメソッド名のみを取得する場合は、次のコードを使用します.
public static void WriteSysLog(int level, string content)
{
MethodBase mb = MethodBase.GetCurrentMethod();
string systemModule = Environment.NewLine;
systemModule += " :" + mb.Module.ToString() + Environment.NewLine;
systemModule += " :" + mb.ReflectedType.Namespace + Environment.NewLine;
// ,
systemModule += " :" + mb.ReflectedType.FullName + Environment.NewLine;
systemModule += " :" + mb.Name;
Console.WriteLine("LogDate: {0}{1}Level: {2}{1}systemModule: {3}{1}content: {4}", DateTime.Now, Environment.NewLine, level, systemModule, content);
Console.WriteLine();
}
ただし、一般的には、このログ・メソッドを取得する呼び出し元であるため、次のコードを使用する必要があります(このメソッドはデモのみです).
public static void WriteSysLog(string content)
{
const int level = 1000;
StackTrace ss = new StackTrace(true);
//index:0 ;1 ;2 ,
MethodBase mb = ss.GetFrame(1).GetMethod();
StackFrame[] sfs = ss.GetFrames();
string systemModule = Environment.NewLine;
systemModule += " :" + mb.Module.ToString() + Environment.NewLine;
systemModule += " :" + mb.DeclaringType.Namespace + Environment.NewLine;
//
systemModule += " :" + mb.DeclaringType.Name + Environment.NewLine;
systemModule += " :" + mb.Name;
Console.WriteLine("LogDate: {0}{1}Level: {2}{1}systemModule: {3}{1}content: {4}", DateTime.Now, Environment.NewLine, level, systemModule, content);
Console.WriteLine();
}
この点について興味深いのはMainの呼び出し元です
System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
に合格
StackTrace ss = new StackTrace(true);
StackFrame[] sfs = ss.GetFrames();
知ることができるNETプログラムの実行順序:
System.Threading.ThreadHelper.ThreadStart()
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
そしてメソッドMainに入ります.
また、MethodBaseクラスから他にも多くの属性を得ることができ、自分でSystemにナビゲートすることができる.Reflection.MethodBaseが表示します.反射を使用すると、クラスのすべてのプロパティ名、メソッド名、メンバー名を巡回できます.この興味深い例の1つは、反射によって変数値を変数名自体に変換することです.
皆さんのaspについてお話ししたいと思います.Netプログラミングが役立ちます.