我在 SDK 中有一个类,我有兴趣调用它的每个属性。我知道唯一的方法(我认为这是唯一的方法)是使用反射,大多数人声称反射很慢等(尽管我看过一些文章说明在某些情况下它并不像最初想象的那么慢).
有没有比循环调用目标类中的每个属性更好的方法?
另外,为什么认为反射这么慢?
最佳答案
可能值得看看 TypeDescriptors。据我所知,它们比使用反射有一些性能优势,并且工作方式略有不同(例如,它们缓存元数据)。 MSDN 文章描述类型描述符如何使用反射的方式让我感到困惑,因此您可能需要找到更广泛的解释(因此第三个链接可能更有帮助)。
类型描述符的 API 类似于用于反射的 API。
导航到:
- http://msdn.microsoft.com/en-us/library/ms171819.aspx
http://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor.aspx 和
http://blogs.msdn.com/b/parthopdas/archive/2006/01/03/509103.aspx
然后对您的问题给出松散的答案: 1) 由于缓存和与反射 TypeDescriptors 略有不同的实现,我提供了比单独反射的性能改进
2) 您可以一口气检索属性和(调用/设置/获取?)属性。这可能是调用 invoke 类型方法并编写 lambda 语句对返回的集合执行某些操作的情况?
关于c# - 调用类中每个属性的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327278/