国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET使用依賴注入,控制反轉(zhuǎn)

這篇具有很好參考價值的文章主要介紹了.NET使用依賴注入,控制反轉(zhuǎn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

.NET 支持依賴項注入 (DI) 軟件設(shè)計模式,這是一種在類及其依賴項之間實現(xiàn) 控制 (IoC) 的反轉(zhuǎn) 的技術(shù)

在設(shè)計能夠進行依賴注入的服務(wù)時:

  • 避免有狀態(tài)的、靜態(tài)類和成員。 通過將應(yīng)用設(shè)計為改用單一實例服務(wù),避免創(chuàng)建全局狀態(tài)。
  • 避免在服務(wù)中直接實例化依賴類。 直接實例化會將代碼耦合到特定實現(xiàn)。
  • 不在服務(wù)中包含過多內(nèi)容,確保設(shè)計規(guī)范,并易于測試。

如果一個類有很多已注入的依賴關(guān)系,這可能表明該類擁有過多的責任,并且違反了單一責任原則 (SRP)。 嘗試通過將某些職責移動到一個新類來重構(gòu)類。

使用的包Microsoft.Extensions.DependencyInjection

參考微軟文檔

.NET 依賴項注入
https://learn.microsoft.com/zh-cn/dotnet/core/extensions/dependency-injection

使用依賴關(guān)系注入
https://learn.microsoft.com/zh-cn/dotnet/core/extensions/dependency-injection-usage

依賴關(guān)系注入指南
https://learn.microsoft.com/zh-cn/dotnet/core/extensions/dependency-injection-guidelines

Program.cs

using WzfgsInfoReportNET6.IBLL;
using WzfgsInfoReportNET6.IBLL_impl;
using WzfgsInfoReportNET6.IDao;
using WzfgsInfoReportNET6.IDao_impl;
using WzfgsInfoReportNET6.Models;


var builder = WebApplication.CreateBuilder(args);

#region 業(yè)務(wù)層接口,實現(xiàn)注冊

builder.Services.AddSingleton<IAnMenusBll, AnMenusBll>();
builder.Services.AddSingleton<IAnRoleBll, AnRoleBll>();
builder.Services.AddSingleton<IAnUserBll, AnUserBll>();
builder.Services.AddSingleton<IArticle2Bll, Article2Bll>();

#endregion

#region 數(shù)據(jù)層接口,實現(xiàn)注冊

builder.Services.AddSingleton<IAdoptedRecordDao, AdoptedRecordDao>();
builder.Services.AddSingleton<IAnMenusDao, AnMenusDao>();
builder.Services.AddSingleton<IAnRoleDao, AnRoleDao>(); 

#endregion

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();
AppHelpter.App = app;


//var kkk = app.Services.GetRequiredService<IAnMenusDao>();
//var bbb = WebApplicationBuilderHelpter.GetServices<ITaskBll>();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

工具類,獲取注冊的實例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

namespace WzfgsInfoReportNET6.Models 
{
    /// <summary>
    /// 依賴注冊,獲取接口實例
    /// </summary>
    /// 創(chuàng)建時間:2023-4-11 16:48:42。作者:xxx
    public sealed class AppHelpter
    {
        /// <summary>
        /// 程序
        /// </summary>
        public static WebApplication App { get; set; }

        /// <summary>
        /// 獲取接口實例
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static T GetServices<T>() where T : notnull
        {
            T instance =  App.Services.GetRequiredService<T>();
            return instance;
        }

    }
}

調(diào)用文章來源地址http://www.zghlxwxcb.cn/news/detail-415169.html

public class AnRoleBll : IAnRoleBll
{
        readonly IAnRoleDao anRoleDao= AppHelpter.GetServices<IAnRoleDao>();
        readonly IAnUserDao anUserDao= AppHelpter.GetServices<IAnUserDao>();
        readonly IRoleFunctionsDao roleFunctionsDao = AppHelpter.GetServices<IRoleFunctionsDao>();

        public async Task<Result> AddAsync(AnRole model)
        {          
            int count = await anRoleDao.AddAsync(model);
            if (count > 0)
            {
                return new Result(true);
            }
            return new Result("新增失敗");
        }
} 

到了這里,關(guān)于.NET使用依賴注入,控制反轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深入理解WPF中的依賴注入和控制反轉(zhuǎn)

    深入理解WPF中的依賴注入和控制反轉(zhuǎn)

    在WPF開發(fā)中, 依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是程序解耦的關(guān)鍵,在當今軟件工程中占有舉足輕重的地位,兩者之間有著密不可分的聯(lián)系 。今天就以一個簡單的小例子,簡述如何在WPF中實現(xiàn)依賴注入和控制反轉(zhuǎn),僅供學(xué)習(xí)分享使用,如有不足之處

    2024年02月06日
    瀏覽(20)
  • 6.3Java EE——控制反轉(zhuǎn)與依賴注入

    一、控制反轉(zhuǎn)的概念 傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計原則 ????????控制反轉(zhuǎn)(Inversion of Control,縮寫為IoC)是面向?qū)ο缶幊讨械囊粋€設(shè)計原則,用來降低程序代碼之間的耦合度。在傳統(tǒng)面向?qū)ο缶幊讨?,獲取對象的方式是用new主動創(chuàng)建一個對象,也就是說應(yīng)用程序掌握著對

    2024年02月16日
    瀏覽(38)
  • CommunityToolkit.Mvvm8.1 IOC依賴注入控制反轉(zhuǎn)(5)

    ? 本系列文章導(dǎo)航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知識對您有所提示,同時歡迎交流和指正 作者:aierong 出處:https://www.cnblogs.com/aierong ? ? CommunityToolkit.Mvvm包不提供ioc功能,但是官方建議使用:Microsoft.Extensions.DependencyInject

    2023年04月14日
    瀏覽(26)
  • Springboot 入門指南:控制反轉(zhuǎn)和依賴注入的含義和實現(xiàn)方式

    目錄 一、什么是控制反轉(zhuǎn)(IoC)? 二、什么是依賴注入(DI)? 三、如何在 springboot 中使用 IoC 和 DI? 總結(jié) 控制反轉(zhuǎn)(Inversion of Control,簡稱 IoC)是一種設(shè)計原則,它的目的是降低代碼之間的耦合度,提高模塊化和可測試性??刂品崔D(zhuǎn)的含義是,將對象的創(chuàng)建、配置和管理

    2024年02月11日
    瀏覽(29)
  • 深入理解 Spring IoC 和 DI:掌握控制反轉(zhuǎn)和依賴注入的精髓

    在本文中,我們將介紹 IoC (控制反轉(zhuǎn))和 DI (依賴注入)的概念,以及如何在 Spring 框架中實現(xiàn)它們。 控制反轉(zhuǎn)是軟件工程中的一個原則,它將對象或程序的某些部分的控制權(quán)轉(zhuǎn)移給容器或框架。我們最常在面向?qū)ο缶幊痰纳舷挛闹惺褂盟?與傳統(tǒng)編程相比,傳統(tǒng)編程中我

    2024年02月04日
    瀏覽(29)
  • Spring學(xué)習(xí)筆記(二)Spring的控制反轉(zhuǎn)(設(shè)計原則)與依賴注入(設(shè)計模式)

    是一種設(shè)計原則,降低程序代碼之間的耦合度 對象由Ioc容器統(tǒng)一管理,當程序需要使用對象時直接從IoC容器中獲取。這樣對象的控制權(quán)就從應(yīng)用程序轉(zhuǎn)移到了IoC容器 依賴注入是一種消除類之間依賴關(guān)系的設(shè)計模式。例如,A類要依賴B類,A類不再直接創(chuàng)建B類,而是把這種依賴

    2024年02月19日
    瀏覽(21)
  • Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對象

    Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對象

    學(xué)習(xí)視頻:【孫哥說Spring5:從設(shè)計模式到基本應(yīng)用到應(yīng)用級底層分析,一次深入淺出的Spring全探索。學(xué)不會Spring?只因你未遇見孫哥】 控制:對于成員變量賦值的控制權(quán) 反轉(zhuǎn)控制:把對于成員變量賦值的控制權(quán),從代碼中反轉(zhuǎn)(轉(zhuǎn)移)到Spring工廠和配置文件中。 好處:解耦合

    2024年02月05日
    瀏覽(54)
  • Spring入門&控制反轉(zhuǎn)(或依賴注入)&AOP的關(guān)鍵概念& 多配置文件&與web集成

    目錄 1. 什么是spring,它能夠做什么? 2. 什么是控制反轉(zhuǎn)(或依賴注入) 3. AOP的關(guān)鍵概念 4. 示例 4.1 創(chuàng)建工程 4.2 pom文件 4.3 spring配置文件 4.4 示例代碼 4.4.1 示例1 4.4.2 示例2 (abstract,parent示例) 4.4.3 使用有參數(shù)構(gòu)造方法創(chuàng)建javaBean 4.4.4 init-method:指定bean的初始化方法 4.4.5 復(fù)雜屬

    2024年02月09日
    瀏覽(24)
  • 【Spring進階系列丨第二篇】Spring中的兩大核心技術(shù)IoC(控制反轉(zhuǎn))與DI(依賴注入)

    【Spring進階系列丨第二篇】Spring中的兩大核心技術(shù)IoC(控制反轉(zhuǎn))與DI(依賴注入)

    我們都知道Spring 框架主要的優(yōu)勢是在 簡化開發(fā) 和 框架整合 上,至于如何實現(xiàn)就是我們要學(xué)習(xí)Spring 框架的主要內(nèi)容,今天我們就來一起學(xué)習(xí)Spring中的兩大核心技術(shù)IoC(控制反轉(zhuǎn))與DI(依賴注入)。 以經(jīng)典的三層架構(gòu)MVC作為案例,以前我們都是這么干的,看如下代碼: 按照

    2024年02月05日
    瀏覽(34)
  • Java Spring IoC&DI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強靈活性和可維護性

    Java Spring IoC&DI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強靈活性和可維護性

    ?? 博客主頁:從零開始的-CodeNinja之路 ? 收錄文章:Java Spring IoCDI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強靈活性和可維護性 ??歡迎大家點贊??評論??收藏?文章 我們一下要學(xué)習(xí)的內(nèi)容都是為了實現(xiàn)?內(nèi)聚低耦合來進行的 軟件設(shè)計原則:?內(nèi)聚低耦合. ?內(nèi)聚指

    2024年04月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包