2015-10-27 75 views
1

我想檢查我們的配置文件,看看它是否與我要創建新的配置文件相同。這種方法稱爲GetConfig()。.GetType().GetProperties()以不同的順序返回屬性

幾個小時後,我注意到如果我保存我的配置文件,然後調用GetConfig它的作品,但如果我關閉程序啓動並加載我的配置文件並調用GetConfig()它返回我的屬性在不同的訂購。

下面你可以看到我的意思,屬性b是一個類的對象。有超過3個屬性,但我只是想給一個小例子:

- - - - - - - - -- - - - - - -- S A V E C O N F I G 
- - - - - - -- - G E T C O N F I G 
1 Field: a 
1 Field: b 
1 Field: c 

,它有救下配置對象。

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

當我加載配置在同一實例

- - - -- - - - - - - - - -- - A R E E Q U A L 
- - - - - - -- - G E T C O N F I G 
1 Field: a 
1 Field: b 
1 Field: c 

下一個配置項對象

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

然而,當我打開我的配置,當我重新啓動程序,我得到這樣的:

- - - -- - - - - - - - - -- - A R E E Q U A L 
- - - - - - -- - G E T C O N F I G 
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); 

非常感謝幫助。

+2

按字母順序排列字段名? – taffer

回答

2

你不能讓有關Type.GetProperties返回值的順序做任何假設,看看有什麼documentation說:

的的GetProperties方法不特定 順序返回屬性,如字母順序或聲明順序。您的代碼不得 取決於返回屬性的順序,因爲 順序不同。

如果你想要一個特定的訂單,你應該讓你的代碼訂購返回的集合。

+0

好的,謝謝。 – SHEePYTaGGeRNeP

+0

@SHEePYTaGGeRNeP你應該讓這個答案被接受。 – xmedeko

相關問題