我需要动态设置一堆值或一个对象的属性,称之为传输对象。
将在短时间内创建相当数量的此类传输对象并设置其属性。我想避免使用反射。
有其他选择吗?如果有,是否有我可以查看的示例实现?
最佳答案
使用Delegate.CreateDelegate
将 MethodInfo
转换为强类型委托(delegate)。这可以显着 提高性能。我有一个 blog post about this带有示例代码。请注意,这仅在您需要多次设置相同的属性时才有帮助 - 基本上这意味着很多类型检查在您创建委托(delegate)时完成一次,而不是在每次调用时完成.
Marc Gravell 有一个 HyperPropertyDescriptor该项目实现了更好的性能,但引入了额外的依赖项。该项目成为更现代的起点Fast Member (github)。通常,您会使用 Fast Member 而不是 HyperProperty。
关于c# - 改善绩效反射(reflect)——我应该考虑哪些替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1027980/