标签: methodbase

MoveNext而不是实际的方法/任务名称

使用log4net声明为:

private readonly ILog log = 
       LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType());
Run Code Online (Sandbox Code Playgroud)

在异步方法或任务中,如下所示:

public async void CheckSomething()
{
    log.Info(null);
    //....
}
Run Code Online (Sandbox Code Playgroud)

日志MoveNext而不是CheckSomething.知道如何让它记录一个实际的方法名称?

c# log4net methodbase async-await

19
推荐指数
5
解决办法
9796
查看次数

如何用反射读取方法体

是否有可能找到有关反射的Method主体的任何信息?

怎么样?

c# reflection methodinfo methodbase

10
推荐指数
1
解决办法
2682
查看次数

MethodBase.GetCurrentMethod()性能?

我编写了一个日志类和一个函数,如下面的代码所示:

Log(System.Reflection.MethodBase methodBase, string message)
Run Code Online (Sandbox Code Playgroud)

每次我记录某些东西时,我也会从methodBase.Name和methodBase.DeclaringType.Name中记录类名.

我阅读了以下文章使用Get CurrentMethod,我注意到这个方法很慢.

我应该使用this.GetType()而不是System.Reflection.MethodBase,或者我应该在我的日志中手动记录类/方法名称,例如Log("ClassName.MethodName","log message")?最佳做法是什么?

c# reflection performance methodbase

9
推荐指数
2
解决办法
1万
查看次数

如何获取方法的MethodBase对象?

我正在尝试使用此帖子中找到的类,但它需要一个MethodBase才能运行.

我读了什么是获取MethodBase对象的最快方法?但我无法得到任何解决方案.

我需要做的是从函数中获取MethodBase对象.

例如,为Console类的静态函数WriteLine()获取MethodBase,或者为List <>的非静态函数Add()获取MethodBase.

谢谢你的帮助!

.net c# reflection methodbase

8
推荐指数
1
解决办法
5325
查看次数

检查方法是否使用PInvoke

反正有没有检查方法是否使用PInvoke?我正在使用MethodBase循环遍历程序集中的所有方法,但我想检查该方法是否使用PInvoke.这是我正在使用的代码:

 foreach (MethodBase bases in mtd.GetType().GetMethods())
 {
      //check if the method is using pinvoke
 }
Run Code Online (Sandbox Code Playgroud)

另外,如果有可能,我怎么能检查正在使用的DLL和被调用的函数/入口点?

c# pinvoke system.reflection methodbase

4
推荐指数
1
解决办法
176
查看次数

如何知道静态方法的类名

我有一个类,它有一些静态方法.我还有另一个类继承我的第一个类,如下所示;

public class Business
{
    public static DataTable Get()
    {
    }
}

public class Model : Business
{
    public int ID { get; set; }
    public string CompanyName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我用它如下;

Model.Get();
Run Code Online (Sandbox Code Playgroud)

在Do方法内部我尝试捕获Model类的类型.我可以在Do方法中捕获下面的Business类类型;

public static DataTable Get()
{    
    Type t = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
}
Run Code Online (Sandbox Code Playgroud)

但我无法捕捉到Model类的类型.我怎样才能做到这一点?

注意: Business类中的Get方法选择从哪个类调用它的列.这就是我需要Model类名称的原因.Model类的原因名称将是表的名称,它将从表Model中选择列.

注2:通常我喜欢使用它;

Business.Get<Model>();
Run Code Online (Sandbox Code Playgroud)

我可以从Model表中获取所有数据.但我尝试使用它;

Model.Get();
Run Code Online (Sandbox Code Playgroud)

c# reflection methodbase

2
推荐指数
1
解决办法
79
查看次数