Пользовательский сеттер для модели С#

Я не знаю, как создать пользовательский сеттер для модели данных С#. Сценарий довольно прост, я хочу, чтобы мой пароль был автоматически зашифрован с помощью функции SHA256. Функция SHA256 работает очень хорошо (раньше я использовал в проектах gazillion).

Я пробовал пару вещей, но когда я запускаю update-database кажется, что она что-то рекурсивно решает и моя Visual Studio зависает (не отправляйте ошибку). Пожалуйста, помогите мне понять, как сделать пароли по умолчанию в модели.

Код с тем, что я уже пробовал

public class Administrator
{
    public int ID { get; set; }
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password
    {
        get
        {
            return this.Password;
        }

        set
        {
            // All this code is crashing Visual Studio

            // value = Infrastructure.Encryption.SHA256(value);
            // Password = Infrastructure.Encryption.SHA256(value);
            // this.Password = Infrastructure.Encryption.SHA256(value);
        }
    }
}

семя

context.Administrators.AddOrUpdate(x => x.Username, new Administrator { Username = "admin", Password = "123" });

Ответ 1

Вам нужно использовать переменную private member в качестве поля поддержки. это позволяет хранить значение отдельно и управлять им в сеттере.

Хорошая информация здесь

public class Administrator
{
    public int ID { get; set; }

    [Required]
    public string Username { get; set; }

    private string _password;

    [Required]
    public string Password
    {
        get
        {
            return this._password;
        }

        set
        {  
             _password = Infrastructure.Encryption.SHA256(value);                
        }
    }
}

Ответ 2

Получите и установите, что вы используете, на самом деле создайте методы, называемые get_Password() и set_Password(password).

Вы хотите, чтобы фактический пароль хранился в частной переменной. Таким образом, просто наличие частной переменной, которая возвращается и обновляется этими "методами", - это путь.

public class Administrator
{
public int ID { get; set; }
[Required]
public string Username { get; set; }
[Required]
private string password;
public string Password
{
    get
    {
        return this.password;
    }

    set
    {
        this.password = Infrastructure.Encryption.SHA256(value);
    }
}
}