Я новичок в инъекции зависимостей, мне интересно, как бы вы справились со следующим сценарием. У нас есть что-то вроде следующего:Как ввести изменяющуюся зависимость
public class DatabaseContext
{
public string ConnectionString {get;}
}
public interface IDataAccess
{
string GetString(int id);
}
public class DataAccessImpl : IDataAccess
{
private DatabaseContext _context;
public DataAccessImpl(DatabaseContext context)
{
this._context=context;
}
public string GetString(int id)
{
return "some data";
}
}
Для веб-приложений, каждый запрос может построить до другого DatabaseContext, чтобы указать на другую базу данных. Для оконных форм мы можем изменить текущий DatabaseContext. Каким образом di framework обрабатывает зависимость, которая может измениться? Таким образом, когда я запрашиваю IDataAccess, он всегда имеет соответствующий/текущий DatabaseContext.
BTW: IMO, IDataAccess - страшное имя для интерфейса. Попробуйте использовать имя, которое описывает его поведение. – 2008-11-08 12:58:42