从未知对象获取属性值的最快方法是什么



我正在使用反射从未知对象获取属性值。我总是在运行时知道未知对象的属性。因此,我只想从该对象中获取这些属性的值。反射对我有用,但我有性能问题。

我们还有其他方法可以有效地实现这一目标吗?我们可以使用序列化吗?有什么开箱即用的方法吗?

前段时间我实现了一个属性访问机制,它使用Delegate.CreateDelegate并且似乎比简单的反射更快。你可以在GitHub上找到它。

如果您始终知道该属性并且可以修改"未知"对象,请让每个未知对象实现一个通用接口。 这样,您可以将对象类型转换为您定义的接口并直接调用属性。

如果您不能直接修改对象并且它们没有密封,则可以从该对象派生一个类并将其标记为实现接口,您仍然可以使用。

此外,您对反射的性能问题不一定排除使用它。 运行你自己的时序研究,看看性能是否真的值得担心。

如果您确实使用反射并且对多个属性感兴趣,则最好调用一次 GetProperties 并循环查找所需的属性,而不是多次调用 GetProperty。

相关内容

  • 没有找到相关文章

最新更新