C# 在每次调用外部包时调用另一个方法';s法

C# 在每次调用外部包时调用另一个方法';s法,c#,asp.net,.net,asp.net-mvc,nuget,C#,Asp.net,.net,Asp.net Mvc,Nuget,我已经安装了一个外部Nuget包,并且我经常使用它的一种方法。现在,我想在上述方法的每次方法调用之后立即调用另一个方法(我自己编写)。这将是: MyExternalNugetPackage.Send(inputs); //varying inputs (in number, type, and values) MyOwnMethodCall(); 由于我已经收到了上千个MyExternalNugetPackage.Send()“,我不想麻烦在每一行上添加“MyOwnMethodCall()

我已经安装了一个外部Nuget包,并且我经常使用它的一种方法。现在,我想在上述方法的每次方法调用之后立即调用另一个方法(我自己编写)。这将是:

 MyExternalNugetPackage.Send(inputs); //varying inputs (in number, type, and values)
 MyOwnMethodCall();

由于我已经收到了上千个MyExternalNugetPackage.Send()“,我不想麻烦在每一行上添加“MyOwnMethodCall()”。是否有任何方法可以扩展或添加功能到“MyExternalNugetPackage.Send()”,以便在其内部调用“MyOwnMethodCall()”

您可以创建如下扩展方法

public static class Extensions
{
    public static void SendWithAction(this MyExternalNugetPackage myExternalNugetPackage, Action action)
    {
        myExternalNugetPackage.Send();
        action.Invoke();
    }
}
然后用扩展方法替换Send()调用,如下所示

MyExternalNugetPackage.SendWithAction(MyOwnMethodCall);
很容易找到替代品来更换它们


不管是哪种方式,如果您不能在Send()完成后执行类似于“AfterSend”的钩子,那么您需要修改代码。

也许这会有所帮助:您所能做的一切都会假定您的客户机代码中有上千行的修改,例如一些装饰程序。但是为什么不搜索并替换呢?这里的要点是每个“MyExternalNugetPackage.Send()”在参数方面都是不同的。因此,我将有大量的副本和替换件。此外,这实际上是一个测试(如果它不起作用,我需要再次更改它)。我一直在寻找某种类型的事件,它会在“myExternalNugetPackage.Send()”之后被调用,而不管它的输入参数是什么。你仍然可以用regex或类似的方法进行搜索和替换。问题是每个“myExternalNugetPackage.Send()”的输入参数是不同的,因此我必须进行大量的复制和替换。我在寻找某种类型的事件,该事件将在“myExternalNugetPackage.Send()”之后立即调用,而不管其输入参数如何。