首页 > 解决方案 > 在 Scrutor 中多次使用 AddClasses

问题描述

我正在尝试使用 Scrutor 来简化 asp.net core 3.1 应用程序中的 DI 注册,如下所示

services.Scan(scan => scan
                .FromAssembliesOf(typeof(IDataAccess),
                    typeof(IService))
                 .AddClasses(classes => classes.InNamespaces("MyNamespace1", 
                 "MyNamespace2",
                 "MyNamespace3"))
                 .AddClasses(classess => classess.AssignableTo<IMyInterface1>())
                .UsingRegistrationStrategy(RegistrationStrategy.Skip)
                .AsImplementedInterfaces()
                .WithTransientLifetime());

不幸的是,第二种AddClasses()覆盖了第一种。无论如何,我可以同时使用这两种约定来检测类吗?

标签: asp.net-corescrutor

解决方案


你可以试试这段代码:

services.Scan(scan => scan
            .FromAssembliesOf(typeof(IDataAccess),
                typeof(IService))
             .AddClasses(classes => classes.InNamespaces("MyNamespace1", 
             "MyNamespace2",
             "MyNamespace3"))
             .AsImplementedInterfaces()
             .WithTransientLifetime()

            .AddClasses(classess => classess.AssignableTo<IMyInterface1>())
            .UsingRegistrationStrategy(RegistrationStrategy.Skip)
            .AsImplementedInterfaces()
            .WithScopedLifetime());

推荐阅读