Детали реализации не видны в классе UserManager <TUser>в ASP.net Core - PullRequest
0 голосов
/ 01 ноября 2019

Я новичок в ядре ASP.NET, и я изучаю библиотеку удостоверений ядра ASP.NET, чтобы увидеть, как работает код за экраном.

Я уже знаю, что класс UserManager отвечает за созданиепользователь, вызвав метод: CreateAsync (пользователь TUser);.

Однако, когда я проверяю класс UserManager в Visual Studio, выбирая класс и нажимая F12 (Перейти к определению), я не вижу кода реализации вметод CreateAsync.

Это выглядит так:

        //
    // Summary:
    //     Creates the specified user in the backing store with no password, as an asynchronous
    //     operation.
    //
    // Parameters:
    //   user:
    //     The user to create.
    //
    // Returns:
    //     The System.Threading.Tasks.Task that represents the asynchronous operation, containing
    //     the Microsoft.AspNetCore.Identity.IdentityResult of the operation.
    [DebuggerStepThrough]
    public virtual Task<IdentityResult> CreateAsync(TUser user);

Это начало файла:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Security.Claims;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace Microsoft.AspNetCore.Identity
{
    //
    // Summary:
    //     Provides the APIs for managing user in a persistence store.
    //
    // Type parameters:
    //   TUser:
    //     The type encapsulating a user.
    public class UserManager<TUser> : IDisposable where TUser : class

Когда я иду на GitHub, я вижу, что CreateAsync вUserManager.cs действительно имеет такой код реализации:

/// <summary>
        /// Creates the specified <paramref name="user"/> in the backing store with given password,
        /// as an asynchronous operation.
        /// </summary>
        /// <param name="user">The user to create.</param>
        /// <param name="password">The password for the user to hash and store.</param>
        /// <returns>
        /// The <see cref="Task"/> that represents the asynchronous operation, containing the <see cref="IdentityResult"/>
        /// of the operation.
        /// </returns>
        public virtual async Task<IdentityResult> CreateAsync(TUser user, string password)
        {
            ThrowIfDisposed();
            var passwordStore = GetPasswordStore();
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }
            var result = await UpdatePasswordHash(passwordStore, user, password);
            if (!result.Succeeded)
            {
                return result;
            }
            return await CreateAsync(user);
        }

Очевидно, я смотрю на два разных файла.

Может кто-нибудь сказать мне, где я могу найти реализацию метода CreateAsync вVisual Studio?

1 Ответ

0 голосов
/ 01 ноября 2019

Visual Studio не предлагает возможность просмотра содержимого внешней сборки (.dll), на которое ссылается ваше решение.

Вам понадобится декомпилятор, такой как dotPeek, чтобы добиться того, что вы хотите: https://www.jetbrains.com/decompiler/

Еще один полезный инструмент в вашем случае - это Resharper, также как и JetBrains. dotPeek бесплатен, а Resharper имеет пробную версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...