Q:

ASP MVC5 UserManager add methods

I want edit UserManager class to add some methods like ChangeEmailAsync (clone of ChangePasswordAsync) I am new on C# and .NET because I used to work in java, I am reading the initiation from Microsoft site and practicing with some forms.
I see a line of code:
IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);

I want see the code from UserManager to copy ChangePassword and create ChangeEmail, and learn the procedure to create some methods (change other fields, etc.)
I navigate with F12 to UserManager and I see that its a interface (Or looks like java interface)
 #region Ensamblado Microsoft.AspNet.Identity.Core.dll, v1.0.0.0
    // C:\Users\User\Documents\Visual Studio 2013\Projects\MTGWeb\packages\Microsoft.AspNet.Identity.Core.1.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll
    #endregion

using System;
using System.Diagnostics;
using System.Security.Claims;
using System.Threading.Tasks;

namespace Microsoft.AspNet.Identity
{
    public class UserManager<TUser> : IDisposable where TUser : global::Microsoft.AspNet.Identity.IUser
    {
        public UserManager(IUserStore<TUser> store);

        public ClaimsIdentityFactory<TUser> ClaimsIdentityFactory { get; set; }
        public IPasswordHasher PasswordHasher { get; set; }
        public IIdentityValidator<string> PasswordValidator { get; set; }
        protected IUserStore<TUser> Store { get; }
        public virtual bool SupportsUserClaim { get; }
        public virtual bool SupportsUserLogin { get; }
        public virtual bool SupportsUserPassword { get; }
        public virtual bool SupportsUserRole { get; }
        public virtual bool SupportsUserSecurityStamp { get; }
        public IIdentityValidator<TUser> UserValidator { get; set; }

        [DebuggerStepThrough]
        public virtual Task<IdentityResult> AddClaimAsync(string userId, Claim claim);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> AddLoginAsync(string userId, UserLoginInfo login);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> AddPasswordAsync(string userId, string password);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> AddToRoleAsync(string userId, string role);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> ChangePasswordAsync(string userId, string currentPassword, string newPassword);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> CreateAsync(TUser user);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> CreateAsync(TUser user, string password);
        public virtual Task<ClaimsIdentity> CreateIdentityAsync(TUser user, string authenticationType);
        public void Dispose();
        protected virtual void Dispose(bool disposing);
        public virtual Task<TUser> FindAsync(UserLoginInfo login);
        [DebuggerStepThrough]
        public virtual Task<TUser> FindAsync(string userName, string password);
        [DebuggerStepThrough]
        public virtual Task<TUser> FindByIdAsync(string userId);
        [DebuggerStepThrough]
        public virtual Task<TUser> FindByNameAsync(string userName);
        [DebuggerStepThrough]
        public virtual Task<System.Collections.Generic.IList<Claim>> GetClaimsAsync(string userId);
        [DebuggerStepThrough]
        public virtual Task<System.Collections.Generic.IList<UserLoginInfo>> GetLoginsAsync(string userId);
        [DebuggerStepThrough]
        public virtual Task<System.Collections.Generic.IList<string>> GetRolesAsync(string userId);
        [DebuggerStepThrough]
        public virtual Task<bool> HasPasswordAsync(string userId);
        [DebuggerStepThrough]
        public virtual Task<bool> IsInRoleAsync(string userId, string role);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> RemoveClaimAsync(string userId, Claim claim);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> RemoveFromRoleAsync(string userId, string role);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> RemoveLoginAsync(string userId, UserLoginInfo login);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> RemovePasswordAsync(string userId);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> UpdateAsync(TUser user);
        [DebuggerStepThrough]
        public virtual Task<IdentityResult> UpdateSecurityStampAsync(string userId);
    }
}

I can implement this? And I can see the code of the methods.

    #region Ensamblado Microsoft.AspNet.Identity.Core.dll, v1.0.0.0
    // C:\Users\User\Documents\Visual Studio 2013\Projects\MTGWeb\packages\Microsoft.AspNet.Identity.Core.1.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll
    #endregion

    using System;
    using System.Diagnostics;
    using System.Security.Claims;
    using System.Threading.Tasks;

    namespace Microsoft.AspNet.Identity
    {
        public class UserManager<TUser> : IDisposable where TUser : global::Microsoft.AspNet.Identity.IUser
        {
            public UserManager(IUserStore<TUser> store);

            public ClaimsIdentityFactory<TUser> ClaimsIdentityFactory { get; set; }
            public IPasswordHasher PasswordHasher { get; set; }
            public IIdentityValidator<string> PasswordValidator { get; set; }
            protected IUserStore<TUser> Store { get; }
            public virtual bool SupportsUserClaim { get; }
            public virtual bool SupportsUserLogin { get; }
            public virtual bool SupportsUserPassword { get; }
            public virtual bool SupportsUserRole { get; }
            public virtual bool SupportsUserSecurityStamp { get; }
            public IIdentityValidator<TUser> UserValidator { get; set; }

            [DebuggerStepThrough]
            public virtual Task<IdentityResult> AddClaimAsync(string userId, Claim claim);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> AddLoginAsync(string userId, UserLoginInfo login);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> AddPasswordAsync(string userId, string password);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> AddToRoleAsync(string userId, string role);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> ChangePasswordAsync(string userId, string currentPassword, string newPassword);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> CreateAsync(TUser user);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> CreateAsync(TUser user, string password);
            public virtual Task<ClaimsIdentity> CreateIdentityAsync(TUser user, string authenticationType);
            public void Dispose();
            protected virtual void Dispose(bool disposing);
            public virtual Task<TUser> FindAsync(UserLoginInfo login);
            [DebuggerStepThrough]
            public virtual Task<TUser> FindAsync(string userName, string password);
            [DebuggerStepThrough]
            public virtual Task<TUser> FindByIdAsync(string userId);
            [DebuggerStepThrough]
            public virtual Task<TUser> FindByNameAsync(string userName);
            [DebuggerStepThrough]
            public virtual Task<System.Collections.Generic.IList<Claim>> GetClaimsAsync(string userId);
            [DebuggerStepThrough]
            public virtual Task<System.Collections.Generic.IList<UserLoginInfo>> GetLoginsAsync(string userId);
            [DebuggerStepThrough]
            public virtual Task<System.Collections.Generic.IList<string>> GetRolesAsync(string userId);
            [DebuggerStepThrough]
            public virtual Task<bool> HasPasswordAsync(string userId);
            [DebuggerStepThrough]
            public virtual Task<bool> IsInRoleAsync(string userId, string role);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> RemoveClaimAsync(string userId, Claim claim);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> RemoveFromRoleAsync(string userId, string role);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> RemoveLoginAsync(string userId, UserLoginInfo login);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> RemovePasswordAsync(string userId);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> UpdateAsync(TUser user);
            [DebuggerStepThrough]
            public virtual Task<IdentityResult> UpdateSecurityStampAsync(string userId);
        }
    }

Thanks a lot for the help, and sorry my english

A:

You cannot directly add new methods to this class, as it is from another assembly. I can see why you would call it an interface, but navigating to a class from another assembly really only shows you the different signatures of the constructors, properties and public methods of the class. You cannot change these.
To change properties of your User, you should use the UpdateAsync(TUser user) method on the UserManager, perhaps like this (in your controller):
    [HttpPost]
    public async Task<ActionResult> ChangeEmail(string newEmail)
    {
        var user = await UserManager.FindByNameAsync(User.Identity.Name);
        user.Email = newEmail;
        UserManager.UpdateAsync(user);
        return View();
    }

