Я знаю, что для структуры карты вы можете зарегистрировать универсальные типы, указав следующее:
StructureMapConfiguration
.For(typeof(IRepository<>))
.Use(typeof(RepositoryImplementation<>));
Когда вызывается ObjectFactory.GetInstance<IRepository<Entity>>()
, возвращается соответствующая реализация RepositoryImplementation<Entity>
.
Но что, если я хочу упакованную версию хранилища? Версия, которая также реализует IRepository<Entity>
- скажем, CachedRepository<Entity>
, которая имеет конструктор, который принимает реализацию IRepository<TEntity>
ctor: CachedRepository(IRepository<Entity> innerRepository)
.
Как мне получить structmap для возврата CachedRepository<Entity>
при запросе IRepository с конкретным RepositoryImplementation в качестве innerRepository?