缓存反射结果(类属性)

Ale*_*lex 7 .net c# reflection caching

考虑到不应该重新评估相当静态的数据而是缓存,我想知道是否可以使用Reflection获取一次类属性,然后缓存它们以便我可以动态评估对象属性和读取/赋值,但不是每次我这样做都会有反射开销.这可能吗(示例代码?)?

为了澄清一点,让我说我有这个类:

public class Cloud
{
     Boolean IsWhite;
}
Run Code Online (Sandbox Code Playgroud)

而我正在尝试制作一个方法,允许我做这样的事情(伪代码):

Update(myCloudInstance, new {IsWhite, true});
Run Code Online (Sandbox Code Playgroud)

如果现在知道已经知道Cloud的属性(typeof(myCloudInstance)),则应首先检查缓存,然后使用缓存信息将属性"IsWhite"赋值为"true",而不是再次执行Reflection.

关于如何做到这一点的任何想法?

Jon*_*eet 8

目前尚不清楚究竟你在做什么,但肯定的缓存可以与反射的差异.

特别是,如果你正在调用方法(或属性getter/setter)并且可以以类型安全的方式这样做,就调用代码而言,如果你将其转换为强类型,它会产生巨大的差异.MethodInfo委托一次,然后重复使用.

如果您能给我们一个完整的例子来说明您正在尝试做什么,这将有助于我们提出更具体的想法甚至代码.如果你只是要缓存一个PropertyInfo可能没有那么多(或任何)效果的东西 - 那么普通Type.GetProperty(等)方法可能已经非常快了.与性能问题一样,关键是衡量你实际在做什么.进行更改并再次测量等.