2015-06-22 2 views
0

У меня в слоях приложения: Web, DAL и BLL.SettingsProvider class - должен ли он быть в проекте DAL или BLL?

Где я должен установить класс SettingsProvider (чтобы получать значения из web.config)? Я думаю, что это должно быть внутри проекта DAL. Я прав?

public class SettingsProvider : ISettingsProvider 
{ 
    public string UploadImagesPath 
    { 
     get { return ConfigurationManager.AppSettings["UploadImagesPath"]; } 
    } 

    .............. 
} 

ответ

1

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

+0

Итак, я мог бы создать проект инфраструктуры и переместить его туда. – user3691221

+1

Определенно. Это намного лучше, потому что вам, возможно, придется создавать другие классы, которые необходимы для разных слоев, а затем вы можете соответствующим образом обновить проект библиотеки классов. – Oluwafemi

+0

Если этот класс только считывает значения из 'web.config', я предлагаю удалить« интерфейс »и сделать его« статическим классом » – Oluwafemi

0

Поскольку настройки специфичны для веб-приложения (потому что они определены в Web.config), я думаю, вы должны поместить его в веб-приложение и как-то «отправить» их в BLL или DAL, где это необходимо. И поскольку у вас уже установлен интерфейс ISettingsProvider, вы можете использовать некоторый контейнер IoC и зарегистрировать этот интерфейс в методе начальной загрузки Web (или sth). Или просто отправьте свой ISettingsProvider (возможно, статическую переменную) arround в DAL и BLL из веб-приложения.

Смежные вопросы