now*_*ed. -1 .net c# asp.net reflection callermembername
如何获得class-name与caller info attributes.
我strongly say a no用反射记录类名.
能够使用[CallerMemberName]下面的方法获取方法名称:
private void Log(string logMessage, [CallerMemberName]string callerName = null)
{
if (logger.IsDebugEnabled)
{
logger.DebugFormat("Executing Method = {1};{0}", logMessage, callerName);
}
}
Run Code Online (Sandbox Code Playgroud)
如何class name使用来电者信息属性登录?
小智 5
首先,该方法是私有的,因此只有当前类才会使用它,在这种情况下,可以使用typeof(T).FullNameor typeof(T).Name属性找到它.
你还可以在这里尝试的是以编程方式从堆栈框架中找出类名,如果方法是公共的,这将适用于其他类,如下所示:
private void Log(string logMessage)
{
StackFrame frame = new StackFrame(1, false);
MethodBase method = frame.GetMethod();
Type declaringType = method.DeclaringType;
// Log declaringType.FullName or other property
}
Run Code Online (Sandbox Code Playgroud)
你可以找到关于将StackFrame更多信息这里和MethodBase 这里
您可以执行此操作的另一种方法是在要记录的方法上使用Type参数,并传入要记录的Type,但是如果要从此类外部调用该方法,则该方法需要是public:
public void Log(string logMessage, Type classType)
{
// Log message and class name
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1982 次 |
| 最近记录: |