Аннотации данных - это метаданные, используемые, например, для проверки, так что вы можете создать собственную аннотацию данных для проверки значения свойства, но проверка не может гарантировать, что ваше свойство не будет установлено, если оно уже имеет значение.Это код, который должен быть частью самого установщика свойства, например:
private string _firstName;
public string FirstName
{
get
{
return _firstName;
}
set
{
if (_firstName != null) throw ...
_firstName = value;
}
}
Если под аннотациями данных вы просто подразумеваете атрибуты, то ответ таков: это может быть достигнуто с помощью атрибутов, НО вам нужно что-то, что будет реализовывать некоторую логикусвязанные с атрибутом.Обычно это делается с помощью Аспектно-ориентированного программирования (AOP), где вы создаете атрибут маркера, который будет использоваться некоторым сложным API.API на основе этого атрибута обернет ваш класс пользовательским кодом, добавив оператор if
во время компиляции (например, PostSharp) или во время выполнения (например, Unity, Spring.NET).