gpt4 book ai didi

.net - 有没有更快的方法来使用反射访问类的属性成员?

转载 作者:行者123 更新时间:2023-12-04 06:38:59 25 4
gpt4 key购买 nike

我目前正在使用以下代码使用反射访问对象的属性:

 Dim propInfo As Reflection.PropertyInfo = myType.GetProperty(propName)
Dim objValue As Object = propInfo.GetValue(myObject, Nothing)

我遇到了一些速度问题,因为这种类型的代码被多次调用并导致速度变慢。

我一直在研究使用 Refelction.Emit 或动态方法,但我不确定如何使用它们。

背景资料:
我正在创建一个对象属性子集的列表,然后与一些元信息相关联(例如它们是否可以从数据库或 xml 加载,如果它们是可编辑的,用户可以看到它们)。这是供以后使用的,因此我们可以编写如下代码:
foreach prop as BaseWrapper in graphNode.NodeProperties
prop.LoadFromDataRow(dr)
next

该应用程序大量使用访问此列表的权限。问题在于,在项目的初始加载时,正在创建大量使用此代码的对象,因此对于创建的每个对象,它都会多次循环此代码。我最初尝试手动将每个属性添加到列表中,但这遇到了并非所有内容都在正确时间初始化的问题以及其他一些问题。

如果没有其他好的方法,那我可能要重新考虑一些设计,看看还能做些什么来提高性能。

最佳答案

您可以采取的几种方法:

  • 使用 Expression Trees .您可以将它们编译为委托(delegate)并缓存它们以供后续使用。
  • 使用 Runtime C# Code Compilation .
  • 不要采用这种方法。告诉我们您想要实现的目标,有人可以提出更好的解决方案。
  • 关于.net - 有没有更快的方法来使用反射访问类的属性成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512525/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com