在 .NET 3.5 中,我将使用 System.Reflection 来使用 AOP(可能在 Castle 的 Windsor 拦截器的上下文中)来执行诸如定义需要在方法级别执行哪些安全操作等事情。我有听说反射的某些部分很慢(我已经阅读了有关它的 MSDN 文章),并且想缓存这些部分(无论如何,当我更接近生产代码时)。我想验证我的方法:
- 缓存键是 {type} + {区分大小写的方法名称} + {参数类型列表}
- 缓存键对象可以通过 Equals 操作进行比较
- 缓存有效负载是 {MethodInfo} + {方法上定义的自定义属性列表}
- 缓存通过构造函数注入注入到我的拦截器
- 缓存可以维护很长时间(基于我不会编写自修改代码的假设;-))
更新:
我不打算通过反射来调用我自己写的方法;只是(目前)查找我想要注入功能的属性,其中属性定义了要注入的行为。目前我的拦截器将使用 Castle 的 Windsor IInterceptor 机制,直到我发现有理由更改它。