我正在尝试理解MVC,我认为我做得很好。但是我遇到了一种特殊的语法,我从MS样本中发现了一些我无法破译的语法!我想知道的是翻译成英文的最新情况,例如: “它返回一个IdentityUser类型的对象,它被传递给一个函数UserManager bla bla”。如果你看下面的代码,它看起来像一串函数??
return new UserManager<IdentityUser>(new UserStore<IdentityUser>(new UsersDbContext()));
任何想法上述意味着什么,请任何人?
答案 0 :(得分:12)
你的问题很模糊。我没有回答这个问题,而是让我描述如何将其分解以理解它。
return new UserManager<IdentityUser>(new UserStore<IdentityUser>(new UsersDbContext()));
我会为每个子表达式引入一个临时变量。所以,这与:
相同var userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new UsersDbContext()));
return userManager;
我们可以进一步分解吗?是。
var userStore = new UserStore<IdentityUser>(new UsersDbContext());
var userManager = new UserManager<IdentityUser>(userStore );
return userManager;
我们可以进一步分解吗?是。
var context= new UsersDbContext();
var userStore = new UserStore<IdentityUser>(context);
var userManager = new UserManager<IdentityUser>(userStore );
return userManager;
我们可以进一步分解吗?否。
这个新程序对您来说更容易理解吗?如果没有,请提出更具体的问题。
请记住,你可以(几乎!)总是重构一个程序,使表达式被赋值给有意义的变量;当你感到被表达式的复杂性所淹没时,这是一种很好的技巧,因为它将一个有意义的标签 - 一个抽象 - 与每个部分联系起来。
答案 1 :(得分:0)
要创建新的UserManager对象,必须将UserStore作为参数传递,但要创建新的UserStore对象,必须传递UsersDbContext对象添加参数。您基本上构建所有新对象以创建UserManager。
答案 2 :(得分:0)
它正在创建一个新的UserManager 泛型。在这里阅读有关这些野兽(在C ++中也称为 templates )的更多信息: https://msdn.microsoft.com/en-us/library/ms379564%28v=vs.80%29.aspx