I need to get fieldinfo in a guaranteed order with respect to declaration order. Right now I’m using attributes to specify order.
Is there a more automatic way of doing this?
Does anyone have knowledge of how LayoutKind.Sequential works, and if I can apply its technique.
I don’t see how LayoutKind.Sequential works, unless there’s some precompiler code that adds attributes.
If you want the ordering of the fields returned by
Type.GetFieldsto be stable, try sorting by theMetadataTokenproperty.Empirically, ordering fields in this manner has been found to return them in declaration order, although this isn’t documented.
By the way, the question as asked doesn’t entirely make sense; there isn’t any reason to believe that the reflection API is tied in any way to how the runtime lays objects out in memory.