使用“中间的洞”图案
我刚刚遇到了“中间的洞”模式,并认为我可以使用它来删除一些重复的代码,特别是当我尝试对不同的方法进行基准测试并在每个方法之前和之后使用相同的代码时。
我能够使用下面的代码了解基础知识。我从 StartingMethod 开始,其主要目标是调用 MainMethod1 & MainMethod2,但它是通过PrePostMethod 实现的。
我现在想知道的是如何传递参数并获取返回值。任何帮助都会很棒。
谢谢。
代码:
public static class HoleInTheMiddle { public static void StartingMethod() { PrePostMethod(MainMethod1); PrePostMethod(MainMethod2); } public static void PrePostMethod(Action someMethod) { Debug.Print("Pre"); someMethod(); Debug.Print("Post"); } public static void MainMethod1() { Debug.Print("This is the Main Method 1"); } public static void MainMethod2() { Debug.Print("This is the Main Method 2"); } }
I just came across the "Hole in the Middle" pattern and think that I can use it to remove some repetitive code specially when I try to benchmark different methods and use the same code before and after each method.
I was able to get the basics working with the code below. I start with StartingMethod, whose main goal is to call MainMethod1 & MainMethod2, but it does so through PrePostMethod.
What I want to know now is how to pass parameters and get a return value. Any help will be great.
Thanks.
The code:
public static class HoleInTheMiddle { public static void StartingMethod() { PrePostMethod(MainMethod1); PrePostMethod(MainMethod2); } public static void PrePostMethod(Action someMethod) { Debug.Print("Pre"); someMethod(); Debug.Print("Post"); } public static void MainMethod1() { Debug.Print("This is the Main Method 1"); } public static void MainMethod2() { Debug.Print("This is the Main Method 2"); } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以创建一个泛型方法并使用泛型委托:
您需要为每个数量的参数提供单独的泛型重载。
You can make a generic method and use a generic delegate:
You'll need a separate generic overload for each number of parameters.