Asp.net core 在Scrutor中多次使用AddClass

Asp.net core 在Scrutor中多次使用AddClass,asp.net-core,scrutor,Asp.net Core,Scrutor,我正在尝试使用Scrutor简化asp.net core 3.1应用程序中的DI注册,如下所示 services.Scan(scan => scan .FromAssembliesOf(typeof(IDataAccess), typeof(IService)) .AddClasses(classes => classes.InNamespaces("MyNamespa

我正在尝试使用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());
services.Scan(扫描=>Scan
.FromAssembliesOf(类型)(IDataAccess),
类型(副)
.AddClasses(classes=>classes.InNamespaces(“MyNamespace1”),
“MyNamespace2”,
“MyNamespace3”))
.AddClasses(classess=>classess.AssignableTo())
.使用RegistrationStrategy(RegistrationStrategy.Skip)
.AsImplementedInterfaces()
.WithTransientLifetime());
不幸的是,第二个
AddClasses()
会覆盖第一个。无论如何,我可以同时使用这两种约定来检测类吗?

您可以尝试以下代码:

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());
services.Scan(扫描=>Scan
.FromAssembliesOf(类型)(IDataAccess),
类型(副)
.AddClasses(classes=>classes.InNamespaces(“MyNamespace1”),
“MyNamespace2”,
“MyNamespace3”))
.AsImplementedInterfaces()
.WithTransientLifetime()
.AddClasses(classess=>classess.AssignableTo())
.使用RegistrationStrategy(RegistrationStrategy.Skip)
.AsImplementedInterfaces()
.使用ScopedLifeTime());

是。谢谢我也明白了。谢谢你的意见