c# - 如何在不使用反射的情况下通过名称动态访问属性?

标签 c# performance reflection dynamic properties

起初我使用的是:

sortedList = unsorted.AsParallel().OrderBy(myItem => TypeDescriptor.GetProperties(myItem)[firstSort.Item2].GetValue(myItem));

其中,firstSort.Item2 是属性的字符串名称。然而,随着未排序列表中项目数量的增加,性能显着下降。 (正如我所料)

有没有办法在不使用反射的情况下做到这一点?

蛮力方法是执行以下操作:

if(firstSort.Item2 == "Size")
   sortedList = unsorted.AsParallel().OrderBy(myItem => myItem.Size);
else if(firstSort.Item2 == "Price")
   sortedList = unsorted.AsParallel().OrderBy(myItem => myItem.Price);
...

我正在寻找可以完成上述行为的东西,但不必在界面中的所有不同属性中进行硬编码。

最佳答案

您使用的所有不涉及实际属性的硬编码列表的内容都将在“幕后”使用反射。

关于c# - 如何在不使用反射的情况下通过名称动态访问属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044255/

相关文章:

java - 反射 dalvik.system.DexClassLoader.findClass() NoSuchMethodException

c# - 如何查找类实例的通用属性名称以及如何为属性运行时赋值

c# - 如何在 C# 或 Linq 中比较大于或小于运算符值的两个字节数组?

c# - WCF 中的请求/多重响应

c# - 为什么 .NET Framework 会锁定 dll?

c# - WebMatrix.WebData.WebSecurity - 如何仅通过 PasswordResetToken 获取用户名

android - 在 recyclerview OnBindViewHolder 方法中为每一行创建 POJO 对象

c++ - 有什么地方可以让我查看 .NET 秒表代码并了解它在做什么?

c# - 查找所有 Func 委托(delegate)

javascript - 在浏览器中分析 javascript 时如何获得更具体的信息?