减少类似的依赖项注入定义?

时间:2019-10-30 15:02:44

标签: c# service-locator

以下代码将Handler#<MyClass#>注入IHandler<MyClass#>中。如何使用反射减少行数?还是还有其他方法?

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddServerSideBlazor();
    // ....
    services.AddTransient<IHandler<MyClass1>, AHandler>();
    services.AddTransient<IHandler<MyClass2>, BHandler>();
    services.AddTransient<IHandler<MyClass3>, CHandler>();
    services.AddTransient<IHandler<MyClass4>, DHandler>();
    services.AddTransient<IHandler<MyClass5>, EHandler>();
    services.AddTransient<IHandler<MyClass6>, FHandler>();
    services.AddTransient<IHandler<MyClass7>, GHandler>();
    // .... more
}

1 个答案:

答案 0 :(得分:2)

如果您需要反射方式,请尝试Scrutor

services.Scan(scan => scan.FromEntryAssembly()
     .AddClasses(classes => classes.AssignableTo(typeof(IHandler<>)))
     .AsSelf()
     .WithTransientLifetime());