介绍
怎么在ASP。网络核心中注入框架依赖?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强> 1,ASP。网络中核心的依赖注入强>
此示例展示了框架级依赖注入如何在ASP。网络核心中工作。其简单但功能强大,足以完成大部分的依赖注入工作。框架级依赖注入支持以下范围:
- <李>
单-总是返回相同的实例
李> <李>瞬态——每次都返回新的实例
李> <李>范围——在当前(请求)范围内返回相同的实例
李>假设我们有两个要通过依赖注入来进行工作的工件:
- <李>
PageContext -自定义请求上下文
李> <李>设置-全局应用程序设置
李>这两个都是非常简单的类.PageContext类为布局页面提供当前页面标题的标题标签。
public class Settings { ,public string  SiteName; ,public string  ConnectionString; } public class  PageContext { private 才能readonly Settings  _settings; public 才能;PageContext (Settings 设置) {才能 ,,,_settings =,设置; ,,} public 才能;string  PageTitle; public 才能;string  FullTitle {才能 ,才能得到 ,,,{ ,,,,,var title =, (PageTitle ? ?,““) .Trim (),, ,,,,,如果(! string.IsNullOrWhiteSpace(标题),,, ,,,,,,,! string.IsNullOrWhiteSpace (_settings.SiteName)) ,,,,,{ ,,,,,,,title +=,,, |,“; ,,,,,} ,,,,,title +=, _settings.SiteName.Trim (); ,,,,,return 标题; ,,,} ,,} }
<强> 2,注册依赖强>
在UI构建块中使用这些类之前,需要在应用程序启动时注册这些类。该工作可以在创业类的ConfigureServices()方法中完成。
public void ConfigureServices (IServiceCollection 服务) { services.AddMvc才能(); var 才能;settings =, new 设置(); 时间=settings.SiteName 才能;配置(“SiteName"); services.AddSingleton才能(设置); services.AddScoped<才能;PageContext> (); }
现在可以将这些类注入到支持依赖注入的控制器和其他UI组件中。
<强> 3,向控制器注入实例强>
我们通过家控制器中的PageContext类分配页面标题。
public class HomeController :控制器 { private 才能readonly PageContext  _pageContext; public 才能;HomeController (PageContext pageContext) {才能 ,,,_pageContext =, pageContext; ,,} public 才能;IActionResult 指数() {才能 ,,,_pageContext.PageTitle =,““ ,,,return 视图(); ,,} public 才能;IActionResult 约() {才能 ,,,_pageContext.PageTitle =,“About"; ,,,return 视图(); ,,} public 才能;IActionResult 错误() {才能 ,,,_pageContext.PageTitle =,“Error"; , ,,,return 视图(); ,,} }
这种分配页面标题的方式不错,因为我们不必使用视讯系统,这样更容易受支持多语言应用程序支持。
<强> 4,向视图注入实例强>
现在控制器的行动中分配了页面标题,是时候在布局页面中使用标题了。我在页面的内容区域添加了标题,所以在tech.io环境中也很容易看到。为了能在布局页面中使用到PageContext,我使用了视图注入(下面代码片段中的第一行)。
@inject PageContext PageContext & lt; ! DOCTYPE html> & lt; html> & lt; head> & lt;才能meta charset=皍tf-8",/比; & lt;才能meta name=皏iewport",内容=翱矶?设备宽度,初始=1.0“,/比; & lt;才能title> @pageContext.FullTitle & lt;才能environment 名称=癉evelopment"比; ,,,& lt; link rel=皊tylesheet" https://www.yisu.com/zixun/, href=" ~/lib/引导/dist/css/bootstrap.css”rel="外部nofollow "/> 环境> <环境名称=胺制凇⑸?怎么在ASP。网络核心中注入框架依赖