Вообще похоже на кейс, где можно применить полиморфизм.
Добавьте какой-нибудь виртуальный метод в базовый класс и переопределяйте его в наследниках.
Например можно использовать ToString.
С другой стороны мне кажется, что тут вы зря применили наследование. Можно использовать интерфейсы для добавления SSN и прочего к классам. Тогда через StringBuilder можно будет собрать итоговую строку просто применяя такой код:
var sb = new StringBuilder();
if (person as IWithX withX)
sb.AppendLine(person.X);
if(person as IWithY withY)
sb.AppendLine(person.Y);