Постоянно смотрю на изменяющийся код. Весь поток контролировать не могу, поэтому выбираю некоторые места по принципу Медведь на рыбалке в период нереста. Далее, привожу что увидел и как бы изменил. Рекомендую смотреть всем (даже если свой код не увидели), чтобы и самому учиться и не допустить в будущем:
...
Тут лучше использовать ключевое слово var
foreach (var pair in _sections)
...
С помощью Ecng.Common пишется короче
pair.Value.Join(Environment.NewLine)
...
Тут или область видимости должна быть private или название должно быть SectionName.
...
С помощью Ecng.Common пишется короче
"{0}={1}".Put(key, value)
...
Лучше проверить через Contains.
...
Старайтесь минимизироваться перехват исключений. В том случае это решается через простую проверку на существование в коллекции.
...
Я бы заменил на ArgumentException. Он как то более осмысленный.
- Не пишите Decimal, Int64, String или Single. Понятно, что это межъязыковое название. Но лучше использовать то, что родное для C#.
...
Стиль именования как в Win32 API. Последний умер де факто много лет назад, наследие его живет и по сей день.😀
- Добавляйте xml комментарии к самим классам, а не только его членам (видел в некоторых местах через // что есть совсем не то). И не забывайте про русский язык. В конце предложения ставится точка.
- Пользуйтесь R#. Он показывает допущенные ошибки и предупреждает заранее о неправильном коде.