C# 在每次调用外部包时调用另一个方法';s法
我已经安装了一个外部Nuget包,并且我经常使用它的一种方法。现在,我想在上述方法的每次方法调用之后立即调用另一个方法(我自己编写)。这将是: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()
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()”之后立即调用,而不管其输入参数如何。