首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在Scrutor中使用直接继承它的类注册接口

只在Scrutor中使用直接继承它的类注册接口
EN

Stack Overflow用户
提问于 2019-10-27 18:11:26
回答 1查看 1.2K关注 0票数 2

我使用洗涤器注册实现接口的程序集中的所有类型。但是,我想排除继承实现接口的非抽象类型的类型.

我有一个类似于以下代码结构的代码结构(为了简洁起见,省略了所有类型成员):

代码语言:javascript
复制
interface IBar {}

interface IFoobar : IBar {}

class Bar : IBar {}

class Foobar : Bar, IFoobar {}

Startup.ConfigureServices

代码语言:javascript
复制
services.Scan(s => s.FromCallingAssembly().AddClasses(false).AsImplementedInterfaces());

这导致了两个IBar注册,一个是实现类型Bar,另一个是实现类型Foobar。我想要的是我得到的IFoobar注册(解析为Foobar),但只需要为IBar注册一个注册,后者解析为Bar

Foobar源于Bar,因为它需要Bar中的功能,而IFoobar则扩展IBar

是否有办法确保接口只在直接继承它的类中注册一次,而不是通过基类注册一次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-27 23:33:34

我按照这里 (链接错误地称它为ReplacementStrategy)使用了这里来解决这个问题。在首先注册所有实现的接口之后,我只需搜索并注册一个匹配的接口,但要使用“”RegistrationStrategy

代码语言:javascript
复制
services.Scan(s => s
    .FromCallingAssembly()
    .AddClasses(false)
    .AsImplementedInterfaces()
    .UsingRegistrationStrategy(RegistrationStrategy.Replace(ReplacementBehavior.ImplementationType))
    .AsMatchingInterface());

这就是我的工作!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58582024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档