Я пытаюсь сделать это , но с универсальным классом вроде:
public class BaseRepository<TEntity> : IBaseRepository<TEntity>, IDisposable
where TEntity : class, new()
{
public BaseRepository(IIndex<ContextKey, IDbContextBase> factory, ContextKey key)
{
Context = factory[key];
Set = Context.Set<TEntity>();
}
}
Чтобы я мог передать ключ ContextKey
в качестве параметра.
Я пытаюсь динамически разрешить dbcontext на основе того, какой ключ был передан в ctor класса BaseRepository<>
.
Зарегистрируйтесь это так:
builder.Register((c, p) =>
new BaseRepository<>(p.Named<ContextKey>("key")))
.As<IBaseRepository<>>();
Разрешить как:
var reader = scope.Resolve<IBaseRepository<ActionEntity>>(
new NamedParameter("key", ContextKey.Applications));
Ключ передается:
public enum ContextKey
{
Pure, Phoebus, Applications, Legacy, None
}
и параметр factory
встроен в Autofac - его автоинъекция и обработка выполняются Autofac.