StowayNet.DependencyInjection 发布

简介

StowayNet.DependencyInjection 是基于 .net core 框架中的依赖注入实现的扩展方法,是我在使用.net core后一直在用的功能,现在将它单独提取出来做成开源库,希望大家能多多支持。

Github地址:https://github.com/stoway/StowayNet.DependencyInjection

入门

NuGet

你可以运行以下命令在你的项目中安装 StowayNet.DependencyInjection。

PM> Install-Package StowayNet.DependencyInjection

配置

首先配置 StowayNet.DependencyInjection 到 Startup.cs 文件中,如下:

......
using StowayNet;
......

public void ConfigureServices(IServiceCollection services)
{
    ......

    services.AddStowayNet();

    ......
}

注入方式

方式一:实现 IStowayDependency 空接口

IStowayDependency 本身为空接口,所有实现 IStowayDependency 接口的类及其子类都将被注入到 Transient 生命周期中。


public class BookService : IStowayDependency
{
    ......
}

如需要注入 ScopedSingleton 生命周期,则需要通过在类中增加特性 StowayDependencyAttribute 实现。

方式二:特性 StowayDependencyAttribute

通过在类中增加特性 StowayDependencyAttribute,通过指定 StowayDependencyType 参数,可以注入 TransientScopedSingleton 生命周期,但对于继承其子类无法注入。


[StowayDependency(StowayDependencyType.Scoped)]
public class BookService {

}

......

[StowayDependency(StowayDependencyType.Singleton)]
public class AuthorService {

}

方式三:实现 IStowayServiceRegister 接口的 Register 方法

通过实现 IStowayServiceRegister 接口的 Register 方法,可以实现自定义的注入服务。


internal class PressServiceRegister : IStowayServiceRegister
{
  public void Register(IServiceCollection services, List<Type> types, IConfiguration configuration)
  {
      var serviceType = typeof(IBookService);
      var stTypes = types.Where(t => !t.IsAbstract && !t.IsInterface).ToList();

      services.RegisterTypes(stTypes, ServiceLifetime.Scoped, true, true);
  }
}

同时也可以将其他第三方框架的配置实现通过此方式管理。

posted @ 2020-05-30 21:11  stoway  阅读(88)  评论(1编辑  收藏  举报