Как создать / использовать файл конфигурации для проекта уровня инфраструктуры (библиотеки классов) в модели, управляемой доменом

В моих слоях, управляемых доменом, проект уровня инфраструктуры - это проект библиотеки классов, который должен использовать файл конфигурации не только для подключения к базе данных, но и для создания репозиториев и объектов. Однако ссылки (упомянутые в конце сообщения) указывают, что проект библиотеки классов не может иметь файл конфигурации (я думаю, что библиотека классов не может иметь app.config).

Мой вопрос в том, что если нет, то как создать и использовать файл конфигурации для моего проекта уровня инфраструктуры (библиотеки классов)? в каком проекте и каково должно быть соглашение об именах?

ДЕТАЛИ:

Я слежу за книгой по предметно-ориентированному дизайну в C # .NET. В этой модели (решение Visual Studio) четыре уровня (каждый проект в Visual Studio как слой) названы ниже:

  1. Проект уровня представления (WPF, а не библиотека классов .NET)
  2. Проект уровня приложения (библиотека классов .NET)
  3. Проект слоя модели (библиотека классов)
  4. Уровень инфраструктуры (библиотека классов .NET)

Проект уровня инфраструктуры (как библиотека классов .NET) должен использовать файл конфигурации, чтобы:

A) Создать репозиторий (используя Repository Factory), B) Создать объекты (используя EntityFactoryBuilder), C) Подключение к базе данных.

Для этого я создал файл конфигурации в проекте «ProjectName.Infrastructure» как «ProjectName.Infrastructure.config», установив для его свойства (с помощью Visual Studio) «Копировать в окно вывода» значение «CopyAlways».

Однако, согласно некоторым сообщениям (ссылки в конце):

«проект библиотеки классов (например, мой« Проект уровня инфраструктуры ») не может иметь файл конфигурации (файл конфигурации приложения ИЛИ файл app.config), вместо этого вызывающее приложение должно предоставить / предоставить файл конфигурации, и эта библиотека классов использует этот предоставленный файл».

Ссылки (которые я исследовал):

Как получить доступ к настраиваемой конфигурации из моего приложения библиотеки классов?

и

http://msdn.microsoft.com/en-us/library/ms229689.aspx


person Fakhar Anwar    schedule 15.09.2013    source источник


Ответы (1)


Идея состоит в том, чтобы сохранить файл конфигурации на стороне клиента (уровень приложения ИЛИ уровня представления), а не на стороне сервера (библиотека классов или DLL). Почему?

Bacause, цель, которую выполняет библиотека классов / dll (уровень инфраструктуры / проект), - это совместное использование более чем одним клиентом (уровни представления или программные приложения), каждый клиент (программное приложение) настроен со своим собственным параметром конфигурации, который может использоваться ( во время выполнения) библиотекой классов (класс .NET ConfigurationManager из Syste.Configuration обеспечивает предоставление Configuratio вызывающего / клиентского приложения для библиотеки классов, чтобы библиотека классов могла использовать ConfigurationManager для использования конфигурации вызывающего / клиентского программного обеспечения).

Другими словами, уровень представления обязан предоставить свои параметры конфигурации (в файле App.config), чтобы библиотека классов (DLL) могла получить доступ к этим параметрам конфигурации (находящимся в файле App.config конкретного клиента) на лету ( ; во время выполнения), если необходимо, используя класс ConfigurationManager (из System.Configuration).

Я считаю, что это очень полезно, поскольку каждое приложение будет иметь свою собственную конфигурацию, тогда как библиотека классов сможет получить доступ к конфигурации вызывающего / клиента через .NET System (System.Configuration), как описано выше.

(Примечание: я где-то читал, что библиотека классов также может иметь свою собственную конфигурацию (вероятно, для собственного внутреннего использования), однако внутренняя настройка конфигурации библиотеки классов не связана с App.Config, я думаю)

person Fakhar Anwar    schedule 19.09.2013