2015-10-27 8 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 

2nd objec t

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