Интересный вопрос. Лично я стараюсь не хранить сложные объекты в настройках, потому что (на мой взгляд, это субъективно) это усложняет понимание кода для программиста по обслуживанию. Я склонен использовать простые типы (sting, int и т. Д.) В настройках.
В тех случаях, когда у меня есть сложный объект с большим количеством свойств, я могу сохранить значения свойств в файле настроек.
Например, допустим, у вас есть собственный ErrorLoggingModule, который имеет свойства, такие как «DatabaseConnectionString», «ApplicationID». (Мы используем что-то похожее на это, и каждое приложение, которое мы пишем, получает уникальный идентификатор приложения. Это дает нам центральную базу данных регистрации ошибок для ВСЕХ наших приложений.)
Я бы сохранял каждое из этих значений в файле настроек и имел одну подпрограмму для регистрации ошибок. Эта процедура создаст новый объект ErrorLoggingModule, прочитает соответствующие настройки из файла и применит значения из файла настроек к соответствующим свойствам, а затем сделает все, что мне нужно с ним сделать.