Если вы всегда знаете свойство и можете изменять «неизвестные» объекты, пусть каждый из неизвестных объектов реализует общий интерфейс.Таким образом, вы можете ввести объект в интерфейс, который вы определяете, и напрямую вызвать свойства.
Если вы не можете изменить объекты напрямую, и они не запечатаны, вы можете извлечь класс из объекта и пометить егокак реализация интерфейса, и вам все еще нужно идти.
Кроме того, ваши проблемы производительности с отражением не обязательно должны исключать его использование.Запустите свои собственные исследования времени и посмотрите, стоит ли беспокоиться о снижении производительности.
Если вы используете отражение и заинтересованы в более чем одном свойстве, вам лучше будет один раз вызвать GetProperties и перейти к циклу, чтобы найтите, которые вам нужны, чем вызывать GetProperty несколько раз.