激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - ASP.NET教程 - 詳解ASP.NET Core 中的框架級依賴注入

詳解ASP.NET Core 中的框架級依賴注入

2020-05-17 15:10Oopsguy ASP.NET教程

本篇文章主要介紹了詳解ASP.NET Core 中的框架級依賴注入,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1、ASP.NET Core 中的依賴注入

此示例展示了框架級依賴注入如何在 ASP.NET Core 中工作。 其簡單但功能強(qiáng)大,足以完成大部分的依賴注入工作。框架級依賴注入支持以下 scope:

  1. Singleton — 總是返回相同的實(shí)例
  2. Transient — 每次都返回新的實(shí)例
  3. Scoped — 在當(dāng)前(request)范圍內(nèi)返回相同的實(shí)例

假設(shè)我們有兩個(gè)要通過依賴注入來進(jìn)行工作的工件:

  1. PageContext — 自定義請求上下文
  2. Settings — 全局應(yīng)用程序設(shè)置

這兩個(gè)都是非常簡單的類。PageContext 類為布局頁面提供當(dāng)前頁面標(biāo)題的標(biāo)題標(biāo)簽。

?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      public class Settings
      {
       public string SiteName;
       public string ConnectionString;
      }
      public class PageContext
      {
        private readonly Settings _settings;
        public PageContext(Settings settings)
        {
          _settings = settings;
        }
        public string PageTitle;
        public string FullTitle
        {
          get
          {
            var id="codetool">

      2、注冊依賴

      在 UI 構(gòu)建塊中使用這些類之前,需要在應(yīng)用程序啟動(dòng)時(shí)注冊這些類。該工作可以在 Startup 類的 ConfigureServices() 方法中完成。

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      public void ConfigureServices(IServiceCollection services)
      {
        services.AddMvc();
        var settings = new Settings();
        settings.SiteName = Configuration["SiteName"];
        services.AddSingleton(settings);
        services.AddScoped<PageContext>();
      }

      現(xiàn)在可以將這些類注入到支持依賴注入的控制器和其他 UI 組件中。

      3、向控制器注入實(shí)例

      我們通過 Home 控制器中的 PageContext 類分配頁面標(biāo)題。

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      public class HomeController : Controller
      {
        private readonly PageContext _pageContext;
        public HomeController(PageContext pageContext)
        {
          _pageContext = pageContext;
        }
        public IActionResult Index()
        {
          _pageContext.PageTitle = "";
          return View();
        }
        public IActionResult About()
        {
          _pageContext.PageTitle = "About";
          return View();
        }
        public IActionResult Error()
        {
          _pageContext.PageTitle = "Error";
       
          return View();
        }
      }

      這種分配頁面標(biāo)題的方式不錯(cuò),因?yàn)槲覀儾槐厥褂?ViewData,這樣更容易受支持多語言應(yīng)用程序支持。

      4、向視圖注入實(shí)例

      現(xiàn)在控制器的 action 中分配了頁面標(biāo)題,是時(shí)候在布局頁面中使用標(biāo)題了。 我在頁面的內(nèi)容區(qū)域添加了標(biāo)題,所以在 tech.io 環(huán)境中也很容易看到。為了能在布局頁面中使用到 PageContext,我使用了視圖注入(下面代碼片段中的第一行)。

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      @inject PageContext pageContext
      <!DOCTYPE html>
      <html>
      <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>@pageContext.FullTitle</title>
        <environment names="Development">
          <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" rel="external nofollow" />
          <link rel="stylesheet" href="~/css/site.css" rel="external nofollow" />
        </environment>
        <environment names="Staging,Production">
          <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow"
             asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow"
             asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
          <link rel="stylesheet" href="~/css/site.min.css" rel="external nofollow" asp-append-version="true" />
        </environment>
      </head>
      ...
      </html>

      5、參考材料

      ASP.NET 5 中的依賴注入(Gunnar Peipman)
      ASP.NET Core:使用視圖注入(Gunnar Peipman)

      以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

      原文鏈接:http://oopsguy.com/2017/10/23/dependency-injection-with-asp-net-core/?utm_source=tuicool&utm_medium=referral

      延伸 · 閱讀

      精彩推薦
      主站蜘蛛池模板: 国产免费观看电影网站 | 免费久久精品 | 精品国产一区二区三区免费 | 欧美一级久久久久久久大片 | 国产精品岛国久久久久久久 | 成人国产精品一区二区毛片在线 | 成人免费午夜视频 | 色中色激情影院 | 一级大片久久 | 欧美日韩大片在线观看 | 色污视频在线观看 | 成人国产精品久久 | chinesehd天美原创xxxx | 自拍偷拍亚洲图片 | 天天夜夜操操 | 在线无码 | 九九精品视频免费 | 国产精品一区二区手机在线观看 | 久久成年网站 | 成人视屏免费看 | 久久91久久久久麻豆精品 | 欧美激情精品久久久久久久久久 | 久草在线网址 | 亚洲男人的天堂在线视频 | 护士hd老师fre0性xxx | 91精品免费在线 | 国产免费传媒av片在线 | 亚洲一区二区免费 | 久久久三区| 久久99国产精品二区护士 | 中文字幕欧美视频 | 99精品视频在线导航 | 青青操精品 | 在线播放免费播放av片 | 欧美特级一级毛片 | 91麻豆蜜桃一区二区三区 | 国产午夜免费 | 黄色av.com| 国产精品久久国产精麻豆96堂 | 精品成人av一区二区在线播放 | 日韩在线观看视频免费 |

      <u id="ktmln"><form id="ktmln"></form></u>
      <mark id="ktmln"></mark>