Если вы используете шаблон проекта по умолчанию, UserManager
создается следующим образом:
В файле Startup.Auth.cs есть такая строка:
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
, который заставляет конвейер OWIN создавать экземпляр экземпляра ApplicationUserManager
каждый раз, когда запрос поступает на сервер. Вы можете получить этот экземпляр из конвейера OWIN, используя следующий код внутри контроллера:
Request.GetOwinContext().GetUserManager<ApplicationUserManager>()
Если вы внимательно посмотрите на свой класс AccountController
, вы увидите следующие фрагменты кода, которые делают доступ к ApplicationUserManager
возможно:
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
Обратите внимание, что в случае, когда вам нужно создать экземпляр класса ApplicationUserManager
, вам нужно использовать статический метод ApplicationUserManager.Create
, чтобы у вас были применены соответствующие настройки и конфигурация к нему.
На самом деле у одного нет преимущества перед другим. Я согласен с тем, что синтаксис Intel намного легче читать. Имейте в виду, что, AFAIK, все инструменты GNU также могут использовать синтаксис Intel.
Похоже, вы можете заставить GDB использовать синтаксис Intel следующим образом:
set disassembly-flavor intel
GCC может использовать синтаксис Intel с помощью -masm = Intel
.
Основной синтаксис для ассемблера GNU (GAS) - AT&T. Синтаксис Intel - относительно новое дополнение к нему. Сборка x86 в ядре Linux имеет синтаксис AT&T. В мире Linux это общий синтаксис. В мире MS синтаксис Intel более распространен.
Лично я ненавижу синтаксис AT&T . Существует множество бесплатных ассемблеров (NASM, YASM), а также GAS, которые также поддерживают синтаксис Intel, поэтому не возникнет проблем с синтаксисом Intel в Linux.
Помимо этого, это просто синтаксическая разница. Результатом обоих будет одинаковый машинный код x86.
Это «тот же язык», поскольку он компилируется в один и тот же машинный код, имеет те же коды операций и т. Д. С другой стороны, если вы вообще используете GCC, вы будете вероятно, захочу изучить синтаксис AT&T только потому, что он установлен по умолчанию - не нужно менять параметры компилятора и т. д., чтобы получить его.
Я тоже порезал зубы на Intel-синтаксисе x86 ASM (в том числе и в DOS) и нашел его более интуитивным изначально при переходе на C / UNIX. Но как только вы изучите AT&T, это будет выглядеть так же просто.
Я бы не стал так много думать - выучить AT&T легко, если вы знаете Intel, и наоборот. Реальный язык гораздо сложнее понять, чем синтаксис. Поэтому в любом случае просто сосредоточьтесь на одном, а затем изучите другой, когда он появится.