.GetType()。GetProperties()以不同的顺序返回属性

我想查看我们的配置文件,看看它是否与创建新配置文件相同。 此方法称为GetConfig()。

几个小时后,我注意到如果我保存我的配置文件,然后调用GetConfig就行了,但是如果我关闭程序启动它并加载我的配置文件并调用GetConfig()它会以不同的顺序返回我的属性。

下面你可以看到我的意思,属性b是一个类的对象。 有超过3个属性,但我只想给出一个小例子:

- - - - - - - - -- - - - - - -- SAVECONFIG - - - - - - -- - GETCONFIG 1 Field: a 1 Field: b 1 Field: c 

以及它必须保存的下一个配置对象。

 1 Field: a 1 Field: b 1 Field: c 

当我在同一个实例上加载配置时

  - - - -- - - - - - - - - -- - AREEQUAL - - - - - - -- - GETCONFIG 1 Field: a 1 Field: b 1 Field: c 

下一个配置对象

 1 Field: a 1 Field: b 1 Field: c 

但是,当我重新启动程序时加载配置时,我得到了这个:

 - - - -- - - - - - - - - -- - AREEQUAL - - - - - - -- - GETCONFIG 1 Field: a 1 Field: b <-- correct 1 Field: c 

第二个对象

 1 Field: a 1 Field: c 1 Field: b <-- should be 2nd. 

因此,当我尝试比较两个配置文件时,它们不匹配。 有没有人有这方面的经验?

 foreach (var field in channel.GetType().GetProperties()) { Console.WriteLine(channel.ChannelNumber + " Field: " + field.Name); 

非常感谢帮助。

您不能对Type.GetProperties的返回值的顺序做出任何假设,请参阅文档说明:

GetProperties方法不以特定顺序返回属性,例如按字母顺序或声明顺序。 您的代码不得依赖于返回属性的顺序,因为该顺序会有所不同。

如果您需要特定订单,则应该对返回的集合进行代码排序。