![]() |
1
2
您可以使用反射来检索属性。然后,将根据属性的名称定位该属性。
欲了解更多信息,请参阅 GetProperties() method &返回 PropertyInfo 类型。 |
![]() |
2
2
|
![]() |
3
0
|
![]() |
4
0
至少有两种方法可以做到这一点: 1.反射和属性信息
不过,在性能方面,您应该小心,对于一个设置了两个属性的类,进行一次粗略的测试,并获得所有属性10k次,反射需要0.06秒,手工编写则需要0.001秒。因此,对性能的打击相当激烈 2.动态方法 这种方法比较复杂,但性能非常值得。动态方法是程序在运行时为其发出MSIL的方法。它们由运行时执行,就像它们是由编译器创建的一样(因此速度非常好)。使用此方法设置并获取类10k上的2个属性花费了0.004秒(相比之下,反射和手动分别为0.06秒和0.001秒)。下面是为特定类型的getter和setter生成委托数组的代码。生成动态代理的成本可能很高,因此如果您打算多次使用代理(您可能会这样做),则应该缓存代理。
Obs:上面的代码不处理没有getter或setter或标记为private的属性。这可以通过查看PropertyInfo类的属性并仅在适当的情况下创建委托来轻松完成 |
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
![]() |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
![]() |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |