Скажем, у меня есть приложение со следующей структурой.
// ASP.NET MVC (Web Project)
// Service/Business Layer (Class Library)
// DAL (Class Library)
Изначально я хотел использовать файл App.config в библиотеке классов DAL, в котором бы содержались такие настройки приложения:
<appSettings>
<add key="DAL-Assembly" value="DAL.LinqToSql.DataContexts"/>
<add key="DAL-Type" value="DAL.LinqToSql.DataContexts.MyDataContext" />
</appSettings>
И тогда я бы использовал фабрику для создания контекста данных, используя отражение
public static DataContext GetContext()
{
string assembly = ConfigurationManager.AppSettings("DAL-Assembly");
string type = ConfigurationManager.AppSettings("DAL-Type");
Assembly a = Assembly.Load(assembly);
return (DataContext)a.CreateInstance(type);
}
Проблема в том, что теперь я понимаю, что библиотека классов должна использовать файл конфигурации вызывающего приложения. Это означает, что он будет искать в презентации файл app.config или web.config - что кажется неправильным.
В этой ситуации DAL, каков наилучший способ сохранить конкретную спецификацию DataContext, содержащуюся в слое DAL, без необходимости перестраивать каждый раз, когда она изменяется? Или даже в более широком смысле, лучший способ сохранить конфигурацию внешней на уровне DAL?