假设我想将一个函数包装在另一个函数中,以便为包装函数添加一些功能。但是我事先不知道返回类型或参数,因为这些方法是作为 Web 服务代理生成的。
我的第一个思路是使用 Func<T>
.但是有些函数可能会返回 void,在这种情况下 Action<T>
会更合适。
现在我的问题是:是否有一种很好的通用方法来实现这一点?我需要寻找某种模式吗?
最佳答案
嗯,Facade Pattern想到......这不是一种非常自动的做事方式,但它有效。您基本上只是将另一个接口(interface)放在代理前面并调用它。然后,您可以添加所需的任何功能。
另一种方法是使用 aspect oriented programming。 .我用过 PostSharp (有空的时候)做这个这个过去。您可以通过向方法/属性添加属性来在函数中添加预处理/后处理等操作。然后,AOP 组件使用代码编织来重写您的 IL 以包含您引用的代码。请注意,这会显着减慢构建过程。
关于c# - 包装函数的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592092/