У меня есть следующая настройка:
public interface IServiceBase {}
public interface IService1: IServiceBase {}
public interface IService2: IServiceBase {}
// ... Snip lots of lines
public interface IService999: IServiceBase {}
public interface IConnection { T GetService<T>() where T: IServiceBase; }
IConnection
зарегистрирована в Autofac. Вызов GetService()
на нем будет динамически реализовывать данный интерфейс и возвращать экземпляр.
Теперь я хотел бы сделать некоторую родовую регистрацию для всех IServiceBase
-derived. Я не хочу регистрировать каждый IServiceX
вручную, и я не хочу выполнять сборочное сканирование (хотя я предполагаю, что это вариант).
В не-действительно-правовом коде это то, что я хочу:
ContainerBuilder.Register<IServiceBase>(x=> x.Resolve<IConnection>().GetService);
Это возможно?
Похоже, что мне нужно IRegistrationSource
особенность Autofac.