Как лучше всего написать класс с редактируемыми свойствами, который становится доступным только для чтения после вызова C#

Место общения программистов C#
Anonymous
Как лучше всего написать класс с редактируемыми свойствами, который становится доступным только для чтения после вызова

Сообщение Anonymous »

Я решил свою проблему следующим образом, но хочу найти лучший способ в .NET 6:
public interface IReadOnlyAbility
{
bool IsReadOnly { get; }
void ReadOnly();
public T CheckForSetValue(T PropertyValue)
{
if (IsReadOnly)
throw new ReadOnlyException();
return PropertyValue;
}
}

public interface IUser : IReadOnlyAbility
{
string UserName { get; set; }
string Password { get; set; }
}

public class User : IUser
{
private string userName = string.Empty;
private string password = string.Empty;
public bool IsReadOnly { get; private set; }
public string UserName
{
get => userName;
set => userName = CheckForSetValue(value);
}
public string Password
{
get => password;
set => password = CheckForSetValue(value);
}
protected T CheckForSetValue(T Value) => ((IReadOnlyAbility)this).CheckForSetValue(Value);
public void ReadOnly() => IsReadOnly = true;
}

Я добавил Services.AddTransient(); и использовал его:
var user = Services.GetService();
user.UserName = "UserName";
user.Password = "Password";
user.ReadOnly();


Подробнее здесь: https://stackoverflow.com/questions/757 ... comes-read

Вернуться в «C#»