Есть ли способ инициализировать свойство virtual без использования конструктора? или я должен просто создать личное поле?
Виртуальный или нет, вам нужен конструктор. Или он будет иметь значение по умолчанию для этого типа.
Потому что нехорошо вызывать виртуальный член в конструкторе
Правильно, вам нужно будет шагнуть осторожно. Нормальные правила действуют. Чтобы быть в безопасности, вы должны создать свою собственность, чтобы она не нуждалась в инициализации или только инициализировала ее в производных конструкторах, где либо класс, либо свойство запечатаны.
Обратите внимание, что будет много случаев, когда автоматические свойства практически не имеют смысла.
В случае виртуального автоматического свойства я бы сказал, что часть инициализации делает эту проблему проблемой и удалит "автоматическую" часть и создаст фоновое поле.
Конечно, поскольку базовые конструкторы вызываются перед конструкторами потомков, если базовый конструктор инициализирует свойство неправильным значением, конструктор-потомк имеет возможность исправить это до того, как построение объекта будет окончательным.