日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core扩展IServiceCollection自动注册服务

發(fā)布時(shí)間:2023/12/4 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core扩展IServiceCollection自动注册服务 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


前言

在ASP.NET Core中使用依賴注入中使用很簡單,只需在Startup類的ConfigureServices()方法中,通過IServiceCollection接口進(jìn)行注入即可,其它的無需關(guān)心。

通過接口的Add*方法進(jìn)行注冊(cè),代碼如下:

1 public void ConfigureServices(IServiceCollection services)2 {3 services.AddSingleton<IUser, MyUser>();4 }

但是這樣的注入方法多了之后,就會(huì)產(chǎn)生太多行的services.Add...方法,看著實(shí)在是不爽;

回想起MEF,只需要兩個(gè)約定好的特性就可以完成注冊(cè)和注入的聲明,比起現(xiàn)在一行行注冊(cè)方式,簡直不要太好。

所以我對(duì)IServiceCollection接口進(jìn)行了擴(kuò)展,讓它能與MEF類似的自動(dòng)處理注冊(cè)類型,而且支持通過多種方式進(jìn)行注冊(cè)。

我對(duì)接口進(jìn)行了如下改造,讓它支持特性(attribute)、類型(繼承或接口)、名稱、命名空間、程序集名等進(jìn)行批量的注冊(cè)。

展示一下特性注冊(cè),在ConfigureServices加入如下:

?

services.Scan(scan => scan.FromAssemblyOf<IUser>().AddClasses().UsingAttributes());

?

這樣就完成了對(duì)IUser所在程序集帶有ServiceDescriptor特性的自動(dòng)注冊(cè),并且可以通過ServiceLifetime進(jìn)行生命周期管理:

public interface IUser {
? ? ?string Name { set; get; } }[ServiceDescriptor(typeof(IUser),ServiceLifetime.Transient)]public class MyUser : IUser { public string Name { set; get; } }

?

這樣在使用ServiceProvoider.GetService(typeof(IUser)),就可以取到MyUser類型實(shí)例了。

以上只是演示了特性注入的方式,還有很多玩法,在Github上YOYO.Extensions.DI項(xiàng)目下:

https://github.com/maxzhang1985/YOYOFx/tree/master/AspNetCore/YOYO.Extensions.DI

?

YOYOFx還非常不完善,只完成了最基本的功能,不過我會(huì)堅(jiān)持寫下去,堅(jiān)持開源,為開源社區(qū)做那么一點(diǎn)點(diǎn)的貢獻(xiàn)。

GitHub:https://github.com/maxzhang1985/YOYOFx? 如果覺還可以請(qǐng)Star下, 歡迎一起交流。

.NET Core 和 YOYOFx 的交流群:?214741894

相關(guān)文章:

  • ASP.NET Core 介紹

  • 通過幾個(gè)Hello World感受.NET Core全新的開發(fā)體驗(yàn)

  • .NET Core系列 : 1、.NET Core 環(huán)境搭建和命令行CLI入門

  • Asp.Net Core 發(fā)布和部署( MacOS + Linux + Nginx )

  • Asp.Net Core 發(fā)布和部署(Linux + Jexus )

  • ASP.NET Core Docker部署

  • ASP.NET Core "完整發(fā)布,自帶運(yùn)行時(shí)" 到j(luò)exus

  • 全球首發(fā)免費(fèi)的MySql for Entity Framework Core

  • ASP.NET Core開發(fā)-使用Nancy框架

  • .NET Core全新路線圖

  • ubuntu16.4下用jexus部署asp.net core rtm

原文地址:http://www.cnblogs.com/maxzhang1985/p/5703191.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的.NET Core扩展IServiceCollection自动注册服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。