我们需要解析的文件格式如下:
v1|000|sammy|endpoint|blah
它是供应商向我们提供的有序固定宽度格式,因此这 5 个字段中的每一个都映射到类中的特定属性(实际格式有 >30)。
我想通过将序列应用于属性来使用反射来解析它。我可以做到这一点的一种方法是自己编造一些东西 - 编写一个采用单个数字的 Attribute 类,并将该属性及其序列索引应用于每个属性,并在 OrderBy 子句中的 Reflection 期间查找它。
在 C# 中是否有现有的或更好的方法来执行此操作?例如,是否已经有一个属性?有没有办法在 C# 甚至 MSIL 中询问类中声明属性的顺序?
属性在元数据中出现的顺序可以使用以下命令查看PropertyInfo.MetadataToken http://msdn.microsoft.com/en-us/library/system.reflection.memberinfo.metadatatoken.aspx。碰巧当前编译器会使这个顺序与属性在源代码中出现的顺序相匹配,因此通过 ordering byMetadataToken
,您将得到与源代码中相同的顺序。
免责声明:未来的编译器可能会改变这一点。如果没有原因,它可能不会,但是如果编译器变成多线程,则可能需要额外不必要的努力来保留原始顺序。如果您依赖于此,请确保您收到硬错误,而不是无提示的运行时损坏(如果/当 .NET Framework 以某种方式更新时导致此中断)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)