Есть ли способ установить минимальное значение для свойства в интерфейсе, поэтому мне не нужно устанавливать его в каждом классе, который я использую в этом интерфейсе? Например, я хотел бы, чтобы ниже код установил минимальное значение для высоты = 0.
{
internal interface IAltitude
{
int altitude { get; set; }
}
}
Я пробовал что-то подобное, но это не работает.
internal interface IAltitude
{
int altitude { get{ return altitude; } set { if (altitude < 0)
{
altitude = 0;
}
}
}
}
Интерфейс не имеет бизнес-логики, такой как проверка аргументов. Бизнес-логика реализована в классы.
Почему бы не использовать uint?
Это будет невозможно напрямую, как вы хотите, но если вы можете предоставить свое целостное требование, я мог бы ограничить значения с точки зрения дизайна. например иметь некоторые ограничения, установленные в реализаторе на самой фабрике или вместо использования Setter в свойстве. сделайте его только для чтения и вместо этого используйте метод Setter.





Нет, реализовать код в интерфейсах невозможно, вам придется написать абстрактный базовый класс.
Начиная с C# 8 можно предоставлять реализации по умолчанию в интерфейсах, однако невозможно объявить поле. Интерфейсы по умолчанию.
Можно было бы использовать uint для высоты, тогда отрицательные значения были бы невозможны. Но если вам нужна какая-либо проверка диапазона, лучше использовать какой-либо атрибут ValidationAttribute, например. Проверка диапазона
отделить валидацию - тогда валидацию можно будет использовать в каждом классе - там много OS libs