Reflection optimizations with attributes .
C中是否有方法:
获取具有属性的类的所有属性(而不是必须遍历所有属性,然后检查属性是否存在)。
如果我想要所有的公共、内部和受保护的属性,而不是私有属性,我就找不到这样做的方法。我只能这样做:
propertyinfo[]props=type.getproperties(bindingFlags.instance bindingFlags.public bindingFlags.nonpublic)
有没有一种方法可以避免获得私人财产,但要获得其他一切。
实际上,没有一种方法可以更快地完成这项工作,但是您可以通过缓存数据来减少执行这项工作的频率。通用实用程序类是一种方便的方法,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | static class PropertyCache<T> { private static SomeCacheType cache; public static SomeCacheType Cache { get { if (cache == null) Build(); return cache; } } static void Build() { /// populate"cache" } } |
然后,您的propertycache.cache只为foo等提供了数据—使用惰性填充。如果愿意,也可以使用静态构造函数。
关于缓存:如果您通过
回答(2):如果您不属于所讨论的类/组,则
如果你想访问这些,你需要请求所有的属性,就像你已经做的那样,然后自己过滤列表。
我不相信有任何一种方法可以做到。
不过,你需要反思多少种类型呢?这真的是一个瓶颈吗?您是否能够缓存结果以避免每种类型都必须执行多次?