.NET Core扩展IServiceCollection自动注册服务
前言 在ASP.NET Core中使用 依赖注入 中使用很简单,只需在 Startup 类的 ConfigureServices ()方法中,通过 IServiceCollection 接口进行注入即可,其它的无需关心。 通过接口的Add*方法进行注册,代码如下: 1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddSingleton<IUser, MyUser>(); 4 } 但是这样的注入方法多了之后,就会产生太多行的services.Add...方法,看着实在是不爽; 回想起MEF,只需要两个约定好的特性就可以完成注册和注入的声明,比起现在一行行注册方式,简直不要太好。 所以我对 IServiceCollection 接口进行了 扩展 ,让它能与 MEF 类似的自动处理注册类型,而且支持通过多种方式进行注册。 我对接口进行了如下改造,让它支持 特性(attribute)、类型(继承或接口)、名称、命名空间、程序集名 等进行批量的注册。 展示一下特性注册,在 ConfigureServices 加入如下: services.Scan(scan => scan.FromAssemblyOf<IUser>() .AddClasses().UsingAttributes());