国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

精準掌握.NET依賴注入:DI自動注冊服務輕松搞定

開發 后端
在.NET中,進行依賴注入(DI)的自動注冊,可以通過反射機制和程序集掃描來實現。以下是詳細的步驟以及相應的C#源代碼示例,包括注冊指定類、注冊帶有自定義特性的類、以及注冊項目下所有帶有接口實現的類(項目下的所有接口)。

概述:.NET依賴注入(DI)通過反射自動注冊服務,示例展示了注冊指定類、帶特性類、項目下所有接口實現的類。簡化配置,提高可維護性。

在.NET中,進行依賴注入(DI)的自動注冊,可以通過反射機制和程序集掃描來實現。以下是詳細的步驟以及相應的C#源代碼示例,包括注冊指定類、注冊帶有自定義特性的類、以及注冊項目下所有帶有接口實現的類(項目下的所有接口):

步驟1:創建接口和實現類

// 接口1
public interface IService1
{
    void PerformService1();
}

// 接口2
public interface IService2
{
    void PerformService2();
}

// 實現類1,實現IService1
public class MyService1 : IService1
{
    public void PerformService1()
    {
        Console.WriteLine("Service 1 performed.");
    }
}

// 實現類2,實現IService2
[CustomRegistration] // 帶有自定義特性
public class MyService2 : IService2
{
    public void PerformService2()
    {
        Console.WriteLine("Service 2 performed.");
    }
}

// 實現類3,實現IService1和IService2
public class MyService3 : IService1, IService2
{
    public void PerformService1()
    {
        Console.WriteLine("Service 3 (Service 1 part) performed.");
    }

    public void PerformService2()
    {
        Console.WriteLine("Service 3 (Service 2 part) performed.");
    }
}

步驟2:創建自定義特性

// 自定義特性
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
sealed class CustomRegistrationAttribute : Attribute
{
}

步驟3:創建自動注冊方法

using System;
using System.Linq;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;

class Program
{
    static void Main()
    {
        // 創建服務集合
        var services = new ServiceCollection();

        // 步驟4:注冊指定類
        services.AddTransient<MyService1>();

        // 步驟5:注冊帶有自定義特性的類
        RegisterClassesWithAttribute<CustomRegistrationAttribute>(services);

        // 步驟6:注冊項目下所有帶有接口實現的類(項目下的所有接口)
        RegisterAllImplementationsOfInterfaces(services);

        // 構建服務提供程序
        var serviceProvider = services.BuildServiceProvider();

        // 步驟7:使用注冊的服務
        var myService1 = serviceProvider.GetService<MyService1>();
        myService1.PerformService1();

        var myService2 = serviceProvider.GetService<MyService2>();
        myService2.PerformService2();

        var myService3 = serviceProvider.GetService<MyService3>();
        myService3.PerformService1();
        myService3.PerformService2();
    }

    // 自動注冊帶有指定特性的類
    static void RegisterClassesWithAttribute<TAttribute>(IServiceCollection services)
        where TAttribute : Attribute
    {
        // 獲取當前程序集
        var assembly = Assembly.GetExecutingAssembly();

        // 獲取帶有指定特性的所有類
        var attributedTypes = assembly.GetTypes()
            .Where(type => type.GetCustomAttributes(typeof(TAttribute), true).Any() && type.IsClass);

        // 注冊這些類
        foreach (var attributedType in attributedTypes)
        {
            services.AddTransient(attributedType);
        }
    }

    // 自動注冊項目下所有帶有接口實現的類(項目下的所有接口)
    static void RegisterAllImplementationsOfInterfaces(IServiceCollection services)
    {
        // 獲取當前程序集
        var assembly = Assembly.GetExecutingAssembly();

        // 獲取項目下所有接口
        var interfaceTypes = assembly.GetTypes()
            .Where(type => type.IsInterface);

        // 獲取實現了這些接口的所有類
        var implementationTypes = assembly.GetTypes()
            .Where(type => interfaceTypes.Any(interfaceType => interfaceType.IsAssignableFrom(type)) && type.IsClass);

        // 注冊這些類
        foreach (var implementationType in implementationTypes)
        {
            services.AddTransient(implementationType);
        }
    }
}

在上述代碼中:

  • 使用AddTransient方法注冊了特定的MyService1類。
  • 使用RegisterClassesWithAttribute方法注冊了帶有CustomRegistrationAttribute特性的類。這里使用了反射機制來動態獲取所有帶有指定特性的類的類型,并將它們注冊到DI容器中。
  • 使用RegisterAllImplementationsOfInterfaces方法注冊了項目下所有實現接口的類。

請確保在項目中引用了Microsoft.Extensions.DependencyInjection相關的包。這是一個基本的示例,實際應用中可能需要更復雜的配置,具體取決于項目的需求。

責任編輯:姜華 來源: 今日頭條
相關推薦

2024-12-30 12:00:00

.NET Core依賴注入屬性注入

2024-11-27 00:24:04

2009-11-12 10:32:47

ADO.NET技術

2009-11-12 10:53:57

ADO.NET連接My

2024-06-12 00:00:01

Java函數式接口

2010-01-13 17:47:59

VB.NET拖放

2010-01-14 13:59:01

2025-01-07 08:55:54

2023-06-28 08:16:50

Autofac應用程序

2010-01-18 19:36:52

VB.NET調整控件

2010-01-14 10:07:08

VB.NET文件名排序

2010-10-22 11:31:53

SQL Server自

2009-11-24 15:34:41

DNS服務器組建

2024-08-26 08:27:18

2010-01-11 18:40:03

VB.NET操作注冊表

2009-02-16 15:35:00

2024-02-26 00:04:00

代碼zip()開發

2024-04-15 07:00:00

Python開發Hatch

2024-06-17 10:28:25

.NETXML 文件

2009-12-11 15:37:58

Linux日志處理
點贊
收藏

51CTO技術棧公眾號

午夜片欧美伦| 亚洲精品小视频| 日韩三级影院| 日韩高清在线电影| 国产精品午夜春色av| 国产富婆一区二区三区| 国产一区二区在线视频播放| 日韩福利一区| 亚洲欧洲www| 欧美精品一区二区三区蜜臀| 高清欧美电影在线| 免费日韩在线观看| 黄色在线看片| 亚洲欧美视频| 亚洲香肠在线观看| 538国产精品一区二区免费视频| 精品少妇人欧美激情在线观看| 中文在线观看免费| 欧美电影三区| 亚洲一区激情| 亚洲国产精品激情在线观看 | 中文字幕超清在线免费观看| 搡女人真爽免费午夜网站| 正在播放日韩精品| 人禽交欧美网站| 欧美影院午夜播放| 国产成人精品网站| 上原亚衣加勒比在线播放 | 色先锋久久av资源部| 中文字幕色av一区二区三区| 国产精品美女黄网| 另类尿喷潮videofree| 中文字幕在线高清| 99久久精品无码一区二区毛片| 亚洲一区久久久| 成人aaaa| 欧美精品在线网站| 亚洲欧洲日本专区| 久久99久久99精品| 老司机av在线免费看| 奇米精品一区二区三区在线观看| 天天免费亚洲黑人免费| 一本一道波多野毛片中文在线 | 制服.丝袜.亚洲.另类.中文| 欧美一区二区久久| 久久久久久久久久久网站| 亚洲免费在线精品一区| 大胆人体一区二区| 亚洲高清二区| 日韩成人在线电影网| 天天综合天天| 久久精品国产99国产| 日本精品久久久久久久| 日韩精品第一| 日韩一区二区三区在线| 亚洲超碰在线| 国产欧美一区二区精品婷婷| 视频在线一区二区三区| 成人三级视频| 一本色道久久综合亚洲精品小说 | 中文字幕影音在线| 亚洲一二在线观看| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 亚洲成人国产精品| 91女神在线视频| 欧美精品二区三区四区免费看视频 | 亚洲午夜国产成人| 亚洲国产欧美自拍| 在线观看中文字幕不卡| 传媒av在线| 国产一区二区三区四区老人| 樱花草国产18久久久久| 视频一区二区三区不卡| 日韩有码视频在线| 最近中文字幕mv第三季歌词| 亚洲男人天天操| 97视频一区| 国产精品免费视频xxxx| 麻豆国产欧美一区二区三区| 午夜免费福利在线| 一本色道久久综合亚洲91 | 欧美精品色婷婷五月综合| 国语自产精品视频在免费| 亚洲午夜高清视频| 久久精品福利| 一区二区三区自拍| 青青草成人免费在线视频| 在线精品福利| 免费男女羞羞的视频网站主页在线观看 | 97在线视频免费| 国产精品永久免费视频| 亚洲女女做受ⅹxx高潮| 亚洲大片免费看| 亚洲综合电影| 欧美中文字幕在线观看| 欧美日韩在线二区| 久久久人成影片一区二区三区| av片哪里在线观看| 日本一本a高清免费不卡| 久久动漫网址| 国产不卡av在线免费观看| 精品午夜电影| 日本一欧美一欧美一亚洲视频| 日本不卡高清| 91在线无精精品一区二区| 久久影院一区二区三区| 久久精品国产2020观看福利| 色一区二区三区四区| 久久手机免费视频| 亚洲一区观看| 91麻豆蜜桃| 成人免费视频一区二区| 久99久在线| 一区二区三区中文免费| 天堂a中文在线| 日韩三级高清在线| av成人福利| 欧美日韩亚洲高清一区二区| 四虎精品一区二区免费| 国产精品日本精品| 国产真实有声精品录音| 国产精品免费视频久久久| 久久―日本道色综合久久| 国产911在线观看| 精品久久人人做人人爰| 中文在线资源在线| 日本乱人伦a精品| 亚洲精品午夜| 国产亚洲精品久久久| 欧美日韩在线精品一区二区三区激情综合 | 欧美日韩电影在线观看| 性欧美videoshd高清| 日韩高清中文字幕| 国产成人精选| 国产精品永久免费视频| 国产成人在线影院| 在线观看欧美www| 91免费黄视频| 色婷婷精品久久二区二区蜜臂av| 亚洲狼人在线| 视频一区二区在线| 亚洲国产裸拍裸体视频在线观看乱了| 天堂av在线| 热久久免费视频精品| 久久精品国产99久久6 | 欧美特黄色片| 天堂一区二区三区| 亚洲大胆美女视频| 欧美亚洲精品在线| av一区二区三区免费观看| 日本乱人伦aⅴ精品| 久久久久久久波多野高潮日日| 欧美伦理视频在线观看| 欧美日韩一级片在线观看| www.豆豆成人网.com| 免费在线成人av| 亚洲欧美一区二区三区极速播放 | 久久婷婷国产综合国色天香| 国产福利在线免费| 欧美美女一区二区| 视频一区二区三区中文字幕| 成人丁香基地| 在线视频欧美日韩| 欧美成人日本| 91国内精品在线视频| 亚洲精品视频网上网址在线观看| 一本久道久久综合婷婷鲸鱼| 裸体免费网站| 97久久精品人搡人人玩| 成人精品鲁一区一区二区| 91超碰在线| 日本一区二区在线视频观看| 欧美视频专区一二在线观看| 亚洲国产资源| 91九色极品视频| 亚洲午夜精品在线| 日韩激情啪啪| 伊人久久大香线蕉综合75| 一片黄亚洲嫩模| 亚洲欧美亚洲| 色就是色亚洲色图| 91精品久久久久久久久久| 日韩毛片在线免费观看| 国产欧美亚洲精品a| 国产污污在线观看| 97在线精品国自产拍中文| 中文字幕高清一区| 加勒比久久高清| 国产天堂在线播放| 久久久久久午夜| 国产亚洲成av人在线观看导航| 久久香蕉精品香蕉| 日本中文字幕视频| 成人在线一区二区| 亚洲福利视频二区| 日韩毛片视频在线看| 久久视频免费| 青青在线免费视频| 精品久久久久久国产91| 麻豆国产欧美一区二区三区|