Как лучше всего написать класс с редактируемыми свойствами, который становится доступным только для чтения после вызова 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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