gpt4 book ai didi

C# - 如何按声明顺序对 Type.GetFields() 返回的字段进行排序?

转载 作者:行者123 更新时间:2023-11-30 14:00:45 25 4
gpt4 key购买 nike

Type.GetFields()不按特定顺序返回字段,但我想按声明顺序对它们进行排序。我怎样才能做到这一点?我没有在 FieldInfo 或具有类似功能的任何内容中看到“索引”属性。

动机:我想实现一个类似于 this answer 中的位域解决方案,但如第二条评论所述,无法保证顺序。

编辑: 说明 - 我不想创建此代码以依赖此排序。我想创建此代码来解析已经具有特定顺序的现有二进制数据。


编辑 2(答案后): 我选择了一个完全回答问题的答案,并且在我的测试中工作正常,但作为旁注,位域解决方案是有问题的:

当从位字段中读取值时,您会得到一个无符号整数(具有一定大小),但是您无法根据在运行时从中获取的实际字段类型(byte、bool、int)正确地转换它字段信息。您可以使用运行时显式条件(if type.Equals(typeof(bool)) 等)来实现,但这有点难看。

我最终使用了 C++/CLI,这让这一切变得简单多了。

最佳答案

您可以编写一个声明顺序的自定义属性。然后对于每个字段,查找该属性。使用值进行排序。

它不会是自动的,但它会是一种非常确定的方式。

使用示例:

[Index(0)]
private int myField;

[Index(1)]
private int myOtherField;

关于C# - 如何按声明顺序对 Type.GetFields() 返回的字段进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977305/

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