0

您好,我对反射非常熟悉,我已经通过了大量的示例,我知道它是如何工作的以及我们可以将它用于什么目的。但是我没有得到任何缓存反射的例子,我也不知道这是什么意思。不知何故,我必须在我正在做的项目中使用反射缓存。

因此,如果有人能简要解释这个概念并给出一些例子,我将不胜感激,也将不胜感激现有例子的链接。并且还请描述属性的反射以及它的缓存。提前致谢。

问候乌梅尔

4

2 回答 2

6

你会像缓存其他任何东西一样缓存它:

 var cache = new Dictionary<Type, IEnumerable<Attribute>>();

 // obj is some object
 var type = obj.GetType();
 var attributes = type.GetCustomAttributes(typeof(MyAttribute), true);
 cache.Add(type, attributes);
于 2011-04-14T20:43:00.003 回答
2

我建议不要缓存反射(呵呵),因为它(当然)是由运行时完成的。如果您打算减少查找时间和动态调用开销

  1. 只需持有对 MethodInfo/PropertyInfo 对象的引用即可调用
  2. 将反射的方法转换为表达式。我建议使用 LINQ,以免重新发明轮子。有关更多指针,请参见此处解析字符串 C# LINQ 表达式

不管你做什么:不要过早优化使事情复杂化。

于 2011-04-14T20:42:58.583 回答