У меня есть следующий сценарий вложенного класса и интерфейсов:
internal class ComplaintDeletedAuditSubscriber : BaseDeletedEventAuditHandler<Complaint, DeletedEvent>
{
...
}
internal abstract class BaseDeletedEventAuditHandler<TEntity, TEvent> : BaseEventAuditHandler<TEntity, TEvent>{
...
}
internal abstract class BaseEventAuditHandler<TEntity, TEvent> : EventNatsSubscriberBase<TEvent>
{
...
}
internal abstract class EventNatsSubscriberBase<T> : INatsSubscriber where T : BaseEvent
{
...
}
Я пытаюсь добиться регистрации в моем контейнере IoC всех классов (подписчиков), которые реализуют INatsSubscriber .Как вы можете видеть INatsSubscriber является основным корнем, а некоторые уровни ниже, на самом деле на последнем уровне, вы можете найти ComplaintDeletedAuditSubscriber , который я в основном хочу зарегистрировать .. и аналогичномного других похожих подписчиков.Я попытался сделать следующее:
Classes.FromThisAssembly()
.BasedOn<INatsSubscriber>()
.WithService.FromInterface()
.LifestyleSingleton(),
и, конечно, несколько других попыток ... но никто из моих подписчиков не получил инъекцию.Как правильно извлечь из сборки классы, которые реализуют INatsSubscriber ?заранее спасибо!
Редактировать: забыл упомянуть, что я хотел бы добавить все эти классы как IEnumerable .., чтобы привести пример:
public QueueListener(IEnumerable<INatsSubscriber> subscribers)
{
_subscribers = subscribers;
}
в данном случае подписчиков должны быть все те классы, зарегистрированные в контейнере IoC, которые влияют на INatsSubscriber