# StowayNet.DependencyInjection **Repository Path**: stoway/StowayNet.DependencyInjection ## Basic Information - **Project Name**: StowayNet.DependencyInjection - **Description**: StowayNet.DependencyInjection 是基于 .net core 框架中的依赖注入实现的扩展方法,它可以在项目中更简捷的实现依赖注入。(已停止更新,请访问StowayNet.Extensions.DependencyInjection) - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-24 - **Last Updated**: 2021-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

# StowayNet.DependencyInjection            [En](https://github.com/stoway/StowayNet.DependencyInjection/blob/master/README.en-us.md) StowayNet.DependencyInjection 是基于 .net core 框架中的依赖注入实现的扩展方法,它可以在项目中更简捷的实现依赖注入。 ## 入门 ### NuGet 你可以运行以下命令在你的项目中安装 StowayNet.DependencyInjection。 ``` PM> Install-Package StowayNet.DependencyInjection ``` ### 配置 首先配置 StowayNet.DependencyInjection 到 Startup.cs 文件中,如下: ```c# ...... using StowayNet; ...... public void ConfigureServices(IServiceCollection services) { ...... services.AddStowayNet(); ...... } ``` ### 注入方式 #### 方式一:实现 `IStowayDependency` 空接口 `IStowayDependency` 本身为空接口,所有实现 `IStowayDependency` 接口的类及其子类都将被注入到 `Transient` 生命周期中。 ```c# public class BookService : IStowayDependency { ...... } ``` 如需要注入 `Scoped`、 `Singleton` 生命周期,则需要通过在类中增加特性 `StowayDependencyAttribute` 实现。 #### 方式二:特性 `StowayDependencyAttribute` 通过在类中增加特性 `StowayDependencyAttribute`,通过指定 `StowayDependencyType` 参数,可以注入 `Transient`、`Scoped`、 `Singleton` 生命周期,但对于继承其子类无法注入。 ```c# [StowayDependency(StowayDependencyType.Scoped)] public class BookService { } ...... [StowayDependency(StowayDependencyType.Singleton)] public class AuthorService { } ``` #### 方式三:实现 `IStowayServiceRegister` 接口的 `Register` 方法 通过实现 `IStowayServiceRegister` 接口的 `Register` 方法,可以实现自定义的注入服务。 ```c# internal class PressServiceRegister : IStowayServiceRegister { public void Register(IServiceCollection services, List types, IConfiguration configuration) { var serviceType = typeof(IBookService); var stTypes = types.Where(t => !t.IsAbstract && !t.IsInterface).ToList(); services.RegisterTypes(stTypes, ServiceLifetime.Scoped, true, true); } } ``` 同时也可以将其他第三方框架的配置实现通过此方式管理。