По-моему, Вы видите это так часто, потому что это - очень хорошая практика, которая часто применяется в неправильных ситуациях.
существует много преимуществ для интерфейсов относительно абстрактных классов:
Вы получаете большую часть преимущества от интерфейсов при контакте с модулями кода. Однако нет никакого легкого правила определить, где границы модуля должны быть. Таким образом, эту лучшую практику легко злоупотребить, особенно сначала разрабатывая некоторое программное обеспечение.
Установите событие пост-сборки для вашего проекта, чтобы переместить файл конфигурации в каталог отладочной сборки.
Щелкните правой кнопкой мыши проект, для которого потребуется конфигурация из другого проекта, и выберите свойства, щелкните вкладку событий сборки и добавьте событие публикации сборки. Примерно так:
Copy configFilePath $(TargetPath)
В свойствах проекта откройте вкладку отладки. Там вы найдете текстовое поле для изменения рабочего каталога.