ASP.NET Core 2.0 中的依赖注入

依赖注入(Dependency Injection,简称DI)是一种设计模式,它允许以可配置的方式将组件的依赖关系传递给组件本身。在ASP.NET Core2.0中,依赖注入的使用变得非常简单,并且可以直接在视图页面中绑定结果。本文将详细介绍如何创建ASP.NET Core项目,以使用依赖注入将学生详细信息绑定到视图页面。

在开始之前,请确保计算机上已经安装了所有必要的先决条件。如果没有,请逐个下载并安装。首先,从以下链接下载并安装Visual Studio2017:

使用代码

在安装了上述先决条件之后,双击桌面上的Visual Studio2017图标。点击“新建”>>“项目”。选择“Visual C#”>>“ASP.NET Core2.0”,输入项目名称并点击“确定”。选择“Web应用程序(Model-View-Controller)”并点击“确定”。项目创建完成后,需要添加一个类、接口和服务,以便在ASP.NET Core应用程序中使用依赖注入。

首先,将创建一个类。为此,在项目中创建一个名为“Data”的文件夹,如下所示:

现在已经在项目中创建了一个名为“Data”的文件夹,下一步是创建一个名为“StudentDetails”的类。右键单击“Data”文件夹并添加一个名为“StudentDetails”的新类。在“StudentDetails”类中,为每个学生创建属性,如学生姓名、科目和成绩:

public class StudentDetails { public string StudentName { get; set; } public string Subject1 { get; set; } public string Subject2 { get; set; } public string Subject3 { get; set; } public string Subject4 { get; set; } public string Subject5 { get; set; } public string Grade { get; set; } }

现在是创建一个接口的时候了,接口中的方法名为“GetAllStudentDetails”,将在服务中实现这个接口。如之前所见,向“data”文件夹中添加一个新类,并将类命名为“IStudentDetailService”。将把这个类更改为接口,因为将创建一个接口来在服务中实现。在这个接口中,声明了一个名为“GetAllStudentDetails”的方法,返回类型为IEnumerable:

public interface IStudentDetailService { IEnumerable GetAllStudentDetails(); }

首先,在项目中创建一个名为“Services”的文件夹,右键单击项目并创建一个名为“Services”的新文件夹。现在让在这个文件夹中添加一个新类,并将其命名为“StudentService”,在这个类中,将实现接口IStudentDetailService。知道,如果实现了接口,那么类中应该包含接口方法。在这项服务中,使用接口方法,并返回包含学生详细信息的列表。将直接在视图页面中注入这个服务:

using ASPNETCOREDependencyInjection.Data; namespace ASPNETCOREDependencyInjection.Services { public class StudentService : IStudentDetailService { public IEnumerable GetAllStudentDetails() { return new List { new StudentDetails { StudentName = "Afreen", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "A" }, new StudentDetails { StudentName = "Kather", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "A" }, new StudentDetails { StudentName = "Asha", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "A" }, new StudentDetails { StudentName = "Afraz", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "B" }, new StudentDetails { StudentName = "Shanu", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "C" } }; } } }

需要将创建的服务注册到容器中。打开项目的Startup.cs文件,将服务添加到容器中。在Startup.cs类中,找到名为ConfigureServices的方法,将像下面这样添加服务“StudentService”:

public void ConfigureServices(IServiceCollection services) { services.AddTransient(); services.AddMvc(); }

现在这变得非常简单和容易,因为可以直接在视图页面中注入服务,并将所有结果绑定到视图页面。为了在视图中注入服务,将使用现有视图页面,即Home>>Index.cshtml。在“Index.cshtml”中,注入StudentService,并将所有结果绑定到表格中:

@inject ASPNETCOREDependencyInjection.Services.StudentService student @if (student.GetAllStudentDetails().Any()) { @foreach (var std in student.GetAllStudentDetails().OrderBy(x => x.StudentName)) { }
Student Name Subject 1 Subject 2 Subject 3 Subject 4 Subject 5 Grade
@std.StudentName @std.Subject1 @std.Subject2 @std.Subject3 @std.Subject4 @std.Subject5 @std.Grade
}

构建并运行项目,将看到所有学生详细信息将显示在主页上。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485