Скажем, у меня есть такая иерархия классов:
public interface IRepository { }
public class SomeSimpleRepository : IRepository {}
Теперь я хочу "украсить" SomeSimpleRepository дополнительными функциями
public class MoreAdvancedRespository : IRepository
{
private readonly IRepository _originalRepository;
public MoreAdvancedRespository(IRepository original)
{ }
}
Через некоторое время еще одна ..
public class TrickyRepository : IRepository
{
private readonly IRepository _originalRepository;
public TrickyRepository (IRepository original)
{ }
}
Теперь мне нужно выполнить связывание.В приложении мне нужен экземпляр TrickyRepository, который должен быть инициализирован с помощью MoreAdvancedRespository.Итак, мне нужно написать что-то вроде:
Bind<IRepository>().To<TrickyRepository>.With ??
Здесь я запутался, мне нужно как-то сказать, взять MoreAdvancedRespository, но инициализировать его с SomeSimpleRepository.Это своего рода цепочка зависимостей, которые должны быть разрешены для одного интерфейса.
Есть ли у кого-нибудь предложения по этому поводу?