Инъекция зависимых зависимостей с шаблоном Decorator
Скажем, у меня есть такая иерархия классов:
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. Это своего рода цепочка зависимостей, которые должны быть разрешены для одного интерфейса.
У кого-нибудь есть предложения по этому поводу?