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

时间:2011-05-16 14:02:34

标签: c# serialization reflection deserialization

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

如果你不能直接修改对象并且它们没有被密封,你可以从对象派生一个类并将其标记为实现界面,你仍然可以去。

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

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