创建UserManager实例的实际语法是什么



VS2013、MVC5、VB

在这篇文章中,我帮助解决了在MVC5应用程序的种子方法中创建用户的问题。

这个问题是问这行代码是怎么回事,它是正确工作的:

Dim myUserManager = New UserManager(Of ApplicationUser)(New UserStore(Of ApplicationUser)(New ApplicationDbContext))

下面解释一下我不明白的地方。我会把它分解成我理解的东西,然后再把我不理解的东西分解出来。

New UserManager(Of ApplicationUser)... is creating an instance of UserManager, yes?

之后,还有2个"新事物"

... (New UserStore(Of ApplicationUser)(New ApplicationDbContext))

我不懂那个语法。在一个新的UserStore中有一个完整的括号,后面是一组新上下文的括号。

这是我不了解的部分。我缺乏理解的部分原因是(1)这种类型的语法通常意味着什么,另一部分是(2)为什么在这种情况下需要这种语法。

"New UserStore"是干什么的,然后是后面的"New"短语?

有没有一种更长的方式来写这篇文章,更具解释性?

您似乎不了解语句中使用的泛型类型参数(这可能会有所帮助)。不确定这是否会有所帮助,但你可以这样分解:

' Create an instance of ApplicationDbContext.
' The parens were missing in the original.
Dim context = New ApplicationDbContext()
' Create an instance of the generic type UserStore(Of T), with
' ApplicationUser as the type parameter, T.
' The type of userStore is therefore UserStore(Of ApplicationUser).
' context is passed as a parameter to the constructor.
Dim userStore = New UserStore(Of ApplicationUser)(context)
' Create an instance of the generic type UserManager(Of T), with
' ApplicationUser as the type parameter, T.
' The type of myUserManager is therefore UserManager(Of ApplicationUser).
' userStore is passed to the constructor as a parameter
Dim myUserManager = New UserManager(Of ApplicationUser)(userStore)

以下代码行:

Dim myUserManager = New UserManager(Of ApplicationUser)(New UserStore(Of ApplicationUser)(New ApplicationDbContext))

相当于:

Dim myApplicationDbContext As New ApplicationDbContext
Dim myUserStore As New UserStore(Of ApplicationUser)(myApplicationDbContext)
Dim myUserManager = New UserManager(Of ApplicationUser)(myUserStore)
  1. 第一步是创建一个新的ApplicationDbContext对象,该对象的构造函数不带任何参数
  2. 第二步是创建一个新的UserStore(Of ApplicationUser)对象,它将已经创建的ApplicationDbContext对象作为其构造函数的参数
  3. 第三步是创建一个新的UserManager(Of ApplicationUser)对象,它将已经创建的UserStore(Of ApplicationUser)对象作为其构造函数的参数

类型名称的(Of ...)部分是一个泛型参数。NET支持泛型类型。Of之后的部分是泛型类的类型参数。因此,正如Dim x As New List(Of String)创建字符串列表一样,UserStore(Of ApplicationUser)创建用于存储应用程序用户的用户存储。

相关内容

  • 没有找到相关文章

最新更新