На мой взгляд, это зависит от того, насколько тесно связаны компоненты с соединениями. Если соединения относятся к базе данных, которая будет использоваться только компонентом, то нет смысла заставлять пользователей компонента что-либо знать об этих соединениях. В этом случае работает сохранение строк подключения в файле конфигурации (app.config или web.config). На самом деле, может быть достаточно сохранить строки подключения внутренними для компонента, но указать имя сервера базы данных в файле конфигурации.
Если компонент использует ту же базу данных, что и пользователи компонента, разрешите передачу соединения как свойство компонента. Компонент может выбрать, использовать ли по умолчанию встроенную строку подключения, если свойство не установлено, или выдать исключение, если свойство не установлено.
Если вы не возражаете, предоставляя потребителям всю строку подключения, тогда разрешите всей строке жить в app.config или web.config. В частности, используйте функцию «Настройки приложения .NET 2.0» (Properties \ settings.settings). Это приведет к компиляции значений по умолчанию в сборку, но при использовании компонента эти значения по умолчанию будут записаны в файл app.config. Они могут быть отредактированы оттуда.
Если вы хотите ограничить детали строки подключения, которые можно изменить, скомпилируйте эти детали в сборку. Выставьте отдельные свойства для частей, которые вы можете изменить. В частности, укажите имя сервера базы данных, имя приложения, имя пользователя, пароль и т. Д. Эти свойства будут устанавливать соответствующие части строки подключения. См. SqlConnectionStringBuilder класс , если вы еще не знали об этом.