zoukankan      html  css  js  c++  java
  • 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);
      }
    }
    
    

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

  • 相关阅读:
    Flume(二)Flume的Source类型
    Hadoop(四)HDFS的高级API操作
    Flume(一)Flume的基础介绍与安装
    MySQL 的索引优化
    CentOS7.5安装Mysql5.7.22
    Hadoop(三)HDFS读写原理与shell命令
    iOS NSDictionary JSON 相互转换
    iOS UICollectionView 在滚动时停在某个item位置上
    vim的基本使用方法
    初次使用git上传代码到github远程仓库
  • 原文地址:https://www.cnblogs.com/stoway/p/12995002.html
Copyright © 2011-2022 走看看