国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .Net Core簡單使用Mvc內置的Ioc

.Net Core簡單使用Mvc內置的Ioc

2020-05-25 13:47反骨仔 ASP.NET教程

這篇文章主要為大家詳細介紹了.Net Core簡單使用Mvc內置的Ioc,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文基于 .NET Core 2.0。

鑒于網上的文章理論較多,鄙人不才,想整理一份 Hello World(Demo)版的文章。 

目錄

場景一:簡單類的使用
場景二:包含接口類的使用
場景三:涉及引用類庫的使用 

場景一:簡單類的使用

類 DemoService.cs:

?
1
2
3
4
5
6
7
public class DemoService
 {
 public string Test()
 {
  return Guid.NewGuid().ToString();
 }
 }

控制器 DemoController.cs:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class DemoController : Controller
 {
 private readonly DemoService _demoService;
 
 public DemoController(DemoService demoService)
 {
  _demoService = demoService;
 }
 
 public IActionResult Index()
 {
  return Json(_demoService.Test());
 }
 }

需要先在 Startup.cs 下的 ConfigureServices() 方法中進行注冊才能使用,這里提供了三種方法,可以選擇自己喜歡的方式進行注冊。

?
1
2
3
4
5
6
7
8
//方法一
 services.AddSingleton(typeof(DemoService), new DemoService());
 
 //方法二
 services.AddSingleton(typeof(DemoService));
 
//方法三
 services.AddSingleton<DemoService>();

.Net Core簡單使用Mvc內置的Ioc

執行輸出結果,正常:

.Net Core簡單使用Mvc內置的Ioc

IOC 的容器目前有三種生命周期 Transient、Scoped 和 Singleton,使用方式大致相同,具體差異不在這里進行敘述:

?
1
2
3
//范例
 services.AddTransient(typeof(DemoService));
 services.AddScoped<DemoService>();

場景二:包含接口類的使用

接口 IDemo2Service.cs:

?
1
2
3
4
public interface IDemo2Service
 {
 string Test();
 }

接口實現 Demo2Service.cs:

?
1
2
3
4
5
6
7
public class Demo2Service : IDemo2Service
 {
 public string Test()
 {
  return Guid.NewGuid().ToString();
 }
 }

控制器 Demo2Controller.cs:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Demo2Controller : Controller
 {
 private readonly IDemo2Service _demoService;
 
 public Demo2Controller(IDemo2Service demoService)
 {
  _demoService = demoService;
 }
 
 public IActionResult Index()
 {
  return Json(_demoService.Test());
 }
 }

目前需要在類 Startup.cs 中的 ConfigureServices() 方法內新增的注冊方法如下(可選其一):

?
1
2
3
4
5
6
7
8
//方法一
 services.AddSingleton(typeof(IDemo2Service), new Demo2Service());
 
//方法二
 services.AddSingleton(typeof(IDemo2Service), typeof(Demo2Service));
 
 //方法三
 services.AddSingleton<IDemo2Service, Demo2Service>();

.Net Core簡單使用Mvc內置的Ioc

輸出結果正常:

.Net Core簡單使用Mvc內置的Ioc

場景三:涉及引用類庫的使用

我們先新增一個用于標識作用的接口 IServiceSupport.cs,該接口沒有包含方法,只是一個標識作用,有點類似 DDD 的聚合根接口 IAggregateRoot:

?
1
2
3
public interface IServiceSupport
{
}

接口 IDemo3Service.cs

?
1
2
3
4
public interface IDemo3Service
 {
 string Test();
 }

接口實現 Demo3Service.cs

?
1
2
3
4
5
6
7
public class Demo3Service : IDemo3Service
 {
 public string Test()
 {
  return Guid.NewGuid().ToString();
 }
 }

這次我們統一編寫一個方法將該類庫下的所有接口和實現進行注冊:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static void AddSingletonServices(IServiceCollection services)
{
 var asm = Assembly.Load(new AssemblyName("IocCoreDemo.Services"));
 var serviceTypes = asm.GetTypes()
 .Where(x => typeof(IServiceSupport).IsAssignableFrom(x) && !x.GetTypeInfo().IsAbstract);
 
 foreach (var serviceType in serviceTypes)
 {
 foreach (var serviceInterface in serviceType.GetInterfaces())
 {
  services.AddSingleton(serviceInterface, serviceType);
 }
 }
}

因為使用了反射,所以需要 using System.Reflection;

這次我們在 Startup.cs 類中添加和修改的方法如圖所示:

.Net Core簡單使用Mvc內置的Ioc

Startup.cs 類中使用的有效命名空間如下:

?
1
2
3
4
5
6
7
using IocCoreDemo.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
using System.Reflection;

如果注入失敗,執行結果便會如圖所示:

.Net Core簡單使用Mvc內置的Ioc

為什么會出現上圖的情況呢?因為小編忘記把接口 IDemo3Service 繼承自接口 IServiceSupport 了,接下來我們只需要做出一個繼承的編寫操作即可:

.Net Core簡單使用Mvc內置的Ioc

再次執行啟動,結果便如你所料:

.Net Core簡單使用Mvc內置的Ioc

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/liqingwen/p/8571366.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品亚洲精品国产欧美kt∨ | 天天综合久久 | 激情欧美日韩一区二区 | 一区欧美 | 草久久av | 国产在线乱 | 国产日韩精品一区 | 亚洲福利影院 | 精品三级在线观看 | 日本理伦片午夜理伦片 | 99国产视频 | 五月天狠狠爱 | 在线观看国产视频 | 亚洲一级在线 | 国产精品久久久久久久久久久免费看 | 亚洲精品国产乱码在线看蜜月 | 日本不卡一区 | 国产一区二区精品在线观看 | 久久人人爽爽爽人久久久 | 黄色电影免费在线观看 | 蜜桃视频一区 | 亚洲区视频 | 一级黄色录像在线观看 | 日韩城人免费 | 亚洲三区在线观看 | 国产精品午夜电影 | 国产精品久久久久久久久久东京 | 亚洲欧洲精品视频在线观看 | 欧美日韩一区二区三区在线电影 | 一区二区三区高清不卡 | 草樱av| 久草视频免费在线播放 | 中文字幕日韩欧美一区二区三区 | av天天看 | 综合导航 | 日本久久成人 | 欧美三级视频 | 国产黄免费在线观看 | 一二区视频 | 精品久久久久一区二区国产 | 亚洲国产中文字幕 |