Если ваш тип недействителен, когда заданы только 2 свойства, вам нужно исправить свой дизайн, а не выдавать ошибку.
Вы предоставляете конструктор по умолчанию, который говорит мне, что мне не нужно ничего устанавливать для использования объекта после инициализации. Вы предоставляете геттеры и сеттеры для каждого свойства, опять же, неявно говоря пользователям вашего класса, что его можно устанавливать, но не другое.
Если это не так, тогда я предлагаю вам предоставить конструктор, который заставляет меня указывать все три значения. Да, я все еще могу использовать (null, null, null)
, но вы можете проверить это и выдать ошибку.
Кроме того, если PropertyA зависит от PropertyB, то либо
A) Только у одного из них должен быть сеттер, или
B) Должна быть логика в установщике каждого для правильной инициализации другого после изменения значения.
Это проблема дизайна, а не языковая проблема. Вы не можете заставить синтаксис инициализатора работать иначе, чем он был задан.
Obj p = новый Obj (1, 2, 3, ... n); // слишком много свойств, чтобы быть симпатичными
Код не должен быть «красивым», он должен работать. Даже тогда конструктор, который принимает несколько аргументов, «уродлив»? А? Не покупайте ерунду для хипстеров, пишите код, который работает и работает хорошо.