c# - 包装函数的通用方法

标签 c# wrapper

假设我想将一个函数包装在另一个函数中,以便为包装函数添加一些功能。但是我事先不知道返回类型或参数,因为这些方法是作为 Web 服务代理生成的。

我的第一个思路是使用 Func<T> .但是有些函数可能会返回 void,在这种情况下 Action<T>会更合适。

现在我的问题是:是否有一种很好的通用方法来实现这一点?我需要寻找某种模式吗?

最佳答案

嗯,Facade Pattern想到......这不是一种非常自动的做事方式,但它有效。您基本上只是将另一个接口(interface)放在代理前面并调用它。然后,您可以添加所需的任何功能。

另一种方法是使用 aspect oriented programming。 .我用过 PostSharp (有空的时候)做这个这个过去。您可以通过向方法/属性添加属性来在函数中添加预处理/后处理等操作。然后,AOP 组件使用代码编织来重写您的 IL 以包含您引用的代码。请注意,这会显着减慢构建过程。

关于c# - 包装函数的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592092/

相关文章:

c# - 字符串字母验证

c# - 将数据注释应用于 MVC 中 View 模型的子属性?

c - 使用Cython作为C包装器

include - 如何从 Nim 中的导入失败中恢复?

iphone - html css 包装器在 iphone safari 中未居中对齐

python - __next__ 在生成器和迭代器中,什么是方法包装器?

c++ - 是否有任何 LAME C++ 包装器\简化器(在 Linux Mac 和纯代码 Win 上工作)?

c# - 是否有用于 C# 的 pretty-print /代码格式化程序(作为构建系统的一部分)?

c# - 使用 List<int> 作为参数模拟一个方法,并使用 Moq 返回 List<>

c# - IIS 池回收后的 session 引用(并发字典变为空白)