Существует более широкий смысл простой перезагрузки файла конфигурации, и именно так остальная часть приложения должна реагировать на это.
Например, вы можете настроить слои контекста базы данных для SQL Server после того, как вы прочитали из конфигурации, что вы собираетесь общаться с SQL Server, и получили для нее строку подключения.
Тем не менее, что если пользователь изменит это потом и укажет базу данных Oracle? Недостаточно просто перезагрузить файл конфигурации, вам нужно будет сообщить остальным приложениям, что что-то изменилось.
Я бы сказал, что вам следует абстрагировать часть конфигурации внутри нового класса, в котором есть события. Как только вы решите перезагрузить конфигурацию, этот класс должен выяснить, какие настройки были изменены, и запустить соответствующие события.
Если вы используете контейнер IoC, вам может потребоваться повторно подключить некоторые его зависимости из-за новых настроек.
Таким образом, кусочки вашего приложения, которые зависят от конфигурации и могут по какой-либо причине локально кешировать настройки конфигурации в течение заданного промежутка времени, должны будут подключаться к соответствующим событиям и реагировать на их срабатывание.
Что касается фактического обнаружения и перезагрузки самого файла конфигурации, другие ответы, кажется, охватили это действительно хорошо, поэтому я не собираюсь повторять это здесь.