Ich habe folgende Klasse für speichern und meine Benutzerdaten abrufen.Autofac SingleInstance Update fehlgeschlagen
public class AuthenticationMethod : IAuthenticationMethod
{
private readonly IUserService _userService;
private readonly IFormCustomizationsService _formCustomizationsService;
private readonly IGridCustomizationsService _gridCustomizationsService;
public virtual User CurrentUser { get; set; }
public virtual List<ViewFormCustomizations> CurrentFormCustomizations { get; set; }
public virtual List<ViewGridCustomizations> CurrentGridCustomizations { get; set; }
public AuthenticationMethod(IUserService userService, IFormCustomizationsService formCustomizationsService, IGridCustomizationsService gridCustomizationsService)
{
_userService = userService;
_gridCustomizationsService = gridCustomizationsService;
_formCustomizationsService = formCustomizationsService;
}
public bool LoginCurrentUser(string userName, string password)
{
CurrentUser = _userService.IsAuthenticated(userName, password);
if (CurrentUser == null || !CurrentUser.IsActive)
{
CurrentUser = null;
return false;
}
Initialize(CurrentUser);
return true;
}
public void LogoutCurrentUser()
{
CurrentUser = null;
CurrentFormCustomizations = null;
CurrentGridCustomizations = null;
}
public virtual void Initialize(User user)
{
CurrentUser = user;
InitialFormCustomizations();
InitialGridCustomizations();
}
public virtual void InitialFormCustomizations()
{
CurrentFormCustomizations = _formCustomizationsService.GetByUserId(CurrentUser.ID).ToList();
}
public virtual void InitialFormCustomization(Guid formId)
{
RemoveFormCustomization(formId);
var newformCustomization = _formCustomizationsService.GetUserFormCustomization(CurrentUser.ID, formId);
CurrentFormCustomizations.Add(newformCustomization);
}
public virtual void RemoveFormCustomization(Guid formId)
{
CurrentFormCustomizations = CurrentFormCustomizations.Where(p => p.FormID != formId).ToList();
}
public virtual void InitialGridCustomizations()
{
CurrentGridCustomizations = _gridCustomizationsService.GetByUserId(CurrentUser.ID).ToList();
}
public virtual void InitialGridCustomization(Guid gridId)
{
RemoveGridCustomization(gridId);
var newgridCustomization = _gridCustomizationsService.GetUserGridCustomization(CurrentUser.ID, gridId);
CurrentGridCustomizations.Add(newgridCustomization);
}
public virtual void RemoveGridCustomization(Guid gridId)
{
CurrentGridCustomizations = CurrentGridCustomizations.Where(p => p.GridID != gridId).ToList();
}
public ViewFormCustomizations GetFormCustomizationsById(Guid formId)
{
return CurrentFormCustomizations.SingleOrDefault(q => q.FormID == formId);
}
public ViewGridCustomizations GetGridCustomizationsById(Guid gridId)
{
return CurrentGridCustomizations.SingleOrDefault(q => q.GridID == gridId);
}
}
und ich registrieren diese Klasse als SingleInstance mit Autofac:
builder.RegisterType(typeof (AuthenticationMethod)).As(typeof (IAuthenticationMethod)).SingleInstance();
aber wenn mein Benutzer oder Benutzer-Info (formCustomization oder GridCustomization) ändern und ich möchte, dass meine AuthenticationMethod mit neuen Daten neu zu laden (für Beispiel Funktion InitialFormCustomization
) wenn ich meine einzelne Instanz in anderer Form mit Autofac Resolve
verwenden möchte, gibt alte Daten anstelle von neu aktualisierten Daten zurück ... Wie kann ich mein Problem lösen?