Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/loogn/Autowired.Core
Make the default DI container inject fields and properties easily . (based on .netstandard2.0)
https://github.com/loogn/Autowired.Core
Last synced: 7 days ago
JSON representation
Make the default DI container inject fields and properties easily . (based on .netstandard2.0)
- Host: GitHub
- URL: https://github.com/loogn/Autowired.Core
- Owner: loogn
- Created: 2019-03-29T07:07:14.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-01-15T00:52:55.000Z (almost 4 years ago)
- Last Synced: 2024-08-02T18:40:03.449Z (3 months ago)
- Language: C#
- Size: 21.5 KB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.en.md
Awesome Lists containing this project
README
# Autowired.Core
#### 介绍
Make the default DI container inject fields and properties easily . (based on .netstandard2.0)#### 安装教程
```
PM> Install-Package Autowired.Core
```#### 一、基本使用说明
1. 编写服务类,并添加[AppService]特性
```
[AppService]
public class MyService
{
//functions
}
```2. 在Setup的ConfigureServices方法中注册应用服务
```
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//注册应用服务
services.AddAppServices();
}
```
3. 其他类中注入使用,比如Controller中
```
public class HomeController : Controller
{
[Autowired]
MyUserService myUserService;public HomeController(AutowiredService autowiredService)
{
autowiredService.Autowired(this);
}
}
```
#### 二、生命周期
```
[AppService(ServiceLifetime.Transient)]
public class MyService
{
//functions
}
```
#### 三、实现接口服务代码:
```
public interface IService{}[AppService]
public class MyService:IService
{
//functions
}
```注入代码:
```
[Autowired]
IService myUserService;
```#### 四、实现多接口
```
public interface IService1{}
public interface IService2{}[AppService]
public class MyService:IService1,IService2
{
//functions
}
```
这个时候可以默认注入类型可以是IService1,即第一个接口类型,如果要注入的IService2,可以把IService2放在第一位,也可以如下声明:
```
[AppService(typeof(IService2))] //对应IService2
[AppService] //对应IService1
public class MyService:IService1,IService2{
//functions
}
```#### 五、一个接口多个实现
```
public interface IService{}[AppService("ser1")]
public class Service1:IService{
//service1的实现
}
[AppService("ser2")]
public class Service2:IService{
//service2的实现
}
```
注入的时候,我们可以根据identifier指定具体哪个实现
```
[Autowired("ser1")]
IService service1;[Autowired("ser2")]
IService service2;
```