[.NET Core] 用微軟的 DI 工具優雅地註冊多個服務

.NET Core 支援相依性注入 (Depedency Injection) 的設計模式,以往的 .NET Framework 在不支援 DI 的時候,我們會利用一些套件幫助我們完成這件事,例如 Autofac。假設現在我們有多個服務要註冊,使用 Autofac 來做 DI,可以使用以下的方法實現:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ServiceDI : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
/// 一個一個註冊
builder.RegisterType<ServiceA>().As<IServiceA>().WithAttributeFiltering();
builder.RegisterType<ServiceB>().As<IServiceB>().WithAttributeFiltering();
builder.RegisterType<ServiceC>().As<IServiceC>().WithAttributeFiltering();

/// 一次註冊多個
var serviceTypes = Assembly.Load("Where.My.Services.At");
builder.RegisterAssemblyTypes(serviceTypes)
.AsImplementedInterfaces()
.WithAttributeFilter();
}
}
Read more