如何使用带有参数和 return 值的 MethodInvoder

How to use MethodInvoder with parameters and return value

我们需要计算每个函数的函数执行时间。原始代码如下:

private void Cal1() 
{
    Console.WriteLine("Start");
    Console.WriteLine("This is method");
    Console.WriteLine("Bye");
}

显然,没有人喜欢在函数的开头和结尾添加两行相同的代码。

然后我尝试使用委托让我们的生活更轻松...

private void Execute(MethodInvoker act)
{ 
    string name = act.GetMethodInfo().ToString();

    Console.WriteLine("Start "+ name);
    act();
    Console.WriteLine("Bye");
}

private void Cal1()
{
    Console.WriteLine("This is method");
}

有人会这样称呼....

Execute(Cal1);

在这种情况下,如何处理具有 return 值和参数的函数?

您需要代理 class。我认为您必须查看这些页面。

https://www.postsharp.net/

http://www.castleproject.org/projects/dynamicproxy/