Я разработал класс, содержащий некоторую информацию о данном объекте, которая будет зарегистрирована в базе данных SQL Server. Я хотел бы сделать этот объект (глубоко) неизменным, но я также должен заверить, что он регистрируется только один раз. Если этот объект реализует следующий шаблон, можно ли его считать неизменным?
public class NewClass
{
private bool registered;
public string SomeProperty { get; private set; }
public NewClass Register()
{
if (registered)
{
throw new NotImplementedException(/*arguments*/);
}
/* Register on DB here... */
registered = true;
return new NewClass(somePropertyFromDB);
}
public NewClass(string someProperty)
{
registered = false;
SomePropery = someproperty;
}
}
Я бы сказал, что кроме логического поля registered
объект неизменен, но эти поля оставляют у меня некоторые сомнения, потому что он действительно изменится при первом запуске метода Register
... Может кто-нибудь сказать мне, как я могу решить эту проблему и при этом сделать объект неизменным?