Можно ли переопределить ApplicationUser приложения ASP.NET Identity?
При попытке добавить Override void ParseEntity и получить следующее сообщение об ошибке:
Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0115 "ApplicationUser.ParseEntity(ref ApplicationUser)": не найден подходящий метод для переопределения...\Models\IdentityModels.cs 47 Active
Я пытаюсь добавить:
public override void ParseEntity(ref ApplicationUser entity)
{
entity.Email = Email;
entity.UserName = Email;
entity.FirstName = FirstName;
entity.LastName = LastName;
entity.UserTypeID = UserTypeID;
entity.ModifiedDate = DateTime.Now;
entity.ModifiedBy = Id;
}
на мой IdentityModel.cs. ApplicaionUser выглядит следующим образом:
public class ApplicationUser : IdentityUser<string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
public ApplicationUser()
{
this.Id = Guid.NewGuid().ToString();
// Add any custom User properties/code here
}
[Display(Name = "First Name")]
[Required]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required]
public string LastName { get; set; }
[Display(Name = "Guarantee Limit")]
public Nullable<double> GuaranteeLimit { get; set; }
[Display(Name = "User Type")]
public int UserTypeID { get; set; }
[Display(Name = "Terms And Conditions Version")]
public string TermsAndConditionsVersion { get; set; }
[Display(Name = "Last Terms And Conditions Date")]
public DateTime ? LastTermsAndConditionsDate { get; set; }
[Display(Name = "Last Login Date And Time")]
public DateTime ? LastLoginDateTime { get; set; }
[Display(Name = "Created Date")]
public DateTime CreatedDate { get; set; }
[Display(Name = "Modified Date")]
public DateTime ? ModifiedDate { get; set; }
[Display(Name = "Modified By")]
public string ModifiedBy { get; set; }
/////////////////I want to add the override here/////////////////
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
Могу ли я добавить переопределение здесь или я что-то упустил? Я просмотрел несколько постов и попробовал рекомендовать добавить с помощью System.Web.Mvc, но это не имеет значения, то же сообщение об ошибке.
1 ответ
Ваш ApplicationUser реализует интерфейс IdentityUser. Интерфейсам нечего переопределять. Ваш класс ApplicationUser должен наследовать от другого класса, который имеет ParseEntity как виртуальный или абстрактный метод, чтобы переопределить его.