使用“中间洞”模式

我刚刚遇到了“中间的漏洞”模式,并且认为我可以使用它来删除一些重复的代码,特别是当我尝试对不同的方法进行基准测试并在每个方法之前和之后使用相同的代码时。

我能够使用下面的代码获得基础知识。 我从StartingMethod开始 ,其主要目标是调用MainMethod1MainMethod2 ,但它是通过PrePostMethod实现的

我现在想知道的是如何传递参数并获得返回值。 任何帮助都会很棒。

谢谢。

代码:

公共静态类HoleInTheMiddle
     {
         public static void StartingMethod()
         {
             PrePostMethod(MainMethod1);
             PrePostMethod(MainMethod2);
         }

         public static void PrePostMethod(Action someMethod)
         {
             Debug.Print( “PRE”);

            的someMethod();

             Debug.Print( “邮报”);
         }

         public static void MainMethod1()
         {
             Debug.Print(“这是主要方法1”);
         }

         public static void MainMethod2()
         {
             Debug.Print(“这是主要方法2”);
         }
     }

您可以创建generics方法并使用generics委托:

public static TResult PrePostMethod(Func someMethod, T1 a, T2 b) { Debug.Print("Pre"); var result = someMethod(a, b); Debug.Print("Post"); return result; } 

每个参数都需要一个单独的generics重载。