反汇编代码中的属性顺序

Ric*_*ett 3 c# attributes reflector disassembly

在检查使用.NET Reflector导出的反汇编代码时,我注意到并不总是维护任何给定实体的属性顺序.

我在比较同一个程序集的两个版本的反汇编代码时已经看到了这一点(在两个版本之间看到了一些小的代码更改),在版本之间没有实际更改的类中.

例如

[WebBrowsable, Personalizable]
public int SomeProperty ...
Run Code Online (Sandbox Code Playgroud)

VS

[Personalizable, WebBrowsable]
public int SomeProperty ...
Run Code Online (Sandbox Code Playgroud)

这非常不方便,因为它看起来好像没有改变的文件.

在这种情况下,什么控制了属性的顺序,是否可以采取任何措施来维护订单?

jas*_*son 6

按照规范

在这样的列表中指定属性的顺序,以及附加到同一程序实体的部分的顺序并不重要.例如,属性规范[A] [B],[B] [A],[A,B]和[B,A]是等价的.

这并不能说没有什么可以维持顺序,但它确实说编译器不必注意属性的排序,因此可以根据需要自由重新排序.如果您想保证订购,您可能需要在构建后修改程序集.可能有一种更简单的方法来解决您的问题.