【发布时间】:2023-03-04 13:21:01
【问题描述】:
我们需要解析的文件格式如下:
v1|000|sammy|endpoint|blah
这是供应商提供给我们的有序固定宽度格式,因此这 5 个字段中的每一个都映射到类中的特定属性(实际格式具有 >30)。
我想通过对属性应用序列来使用反射来解析它。我可以做到这一点的一种方法是自己编造一些东西 - 编写一个接受单个数字的 Attribute 类,并将该属性应用到具有其序列索引的每个属性,并在 OrderBy 子句中的反射期间查找它。
在 C# 中是否有现有的或更好的方法来执行此操作?例如,是否已经有一个属性?有没有办法在 C# 甚至 MSIL 中询问在类中声明了哪些顺序属性?
【问题讨论】:
-
这取决于。有一些方法,但不能保证它们会起作用,它们依赖于可能会在较新版本的编译器和可能较新版本的 .NET Framework 中发生变化的实现细节。您想要的解决方案有多可靠?
-
为什么要使用反射?与仅编写一个知道如何将一系列字符映射到给定属性的加载器类相比,它相对较慢且更复杂。
-
@hvd 我会接受可能对未来编译器更改很脆弱的简单性,只要我可以通过单元测试捕捉到编译器驱动的中断,这对于我能想象的任何解决方案都应该是微不足道的。
-
@ChrisMoschini 在那种情况下,用一个大胖子的免责声明来回答。 :)
标签: c# reflection properties sql-order-by