我有以下嵌套类和接口的场景:
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的类
答案 0 :(得分:0)
您需要WithServiceBase()
而不是FromInterface()
。