有人告诉我使用Reflection.Emit代替PropertyInfo.GetValue/SetValue,因为这样可以更快。
但是我真的不知道Reflection.Emit有什么内容,以及如何用它代替GetValue和SetValue。有人可以帮我吗?

最佳答案

只是一个替代答案;如果您想要性能,但是想要一个类似的API,请考虑HyperDescriptor;这在下面使用了Reflection.Emit(因此您不必这样做),但是将其自身暴露在PropertyDescriptor API上,因此您可以使用:

PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj);
props["Name"].SetValue(obj, "Fred");
DateTime dob = (DateTime)props["DateOfBirth"].GetValue(obj);

一行代码启用它,并处理所有缓存等。

关于c# - Reflection.Emit比GetValue和SetValue更好:S,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1804341/

10-12 22:37