如何从MethodBase类实例获取对象

时间:2016-02-03 13:37:33

标签: c# .net reflection

我有一个模块(Fody.MethodTimer),我可以使用属性扩展我的类。当我的class'es方法被执行时,调用一个静态方法(在另一个类中)

public  class CommandBase
{
    [Time]
    public bool test()
    {
        return true;
    }
}

public static class MethodTimeLogger
{
    public static void Log(MethodBase methodBase, long milliseconds)
    {
        //Do some logging here
    }
}

基本上,在完成测试调用的方法之后,执行Log方法。正如您所看到的,它获取了一个MethodBase参数,并且只需要描述调用此方法调用的方法即可。

我的问题是,如果可以从.NET MethodBase类实例中获取调用Log方法Call的对象。

1 个答案:

答案 0 :(得分:4)

没有。 MethodBase是从类型中提取的,而不是实例。如果要在其上调用方法,则需要将实例作为参数传递。

即使你可以,你怎么知道调用方法时要使用的参数值?

这就是为什么所有内置事件处理程序都有一个object sender参数 - 所以你知道哪个对象触发了事件。