Какой самый быстрый способ получить значения свойств от неизвестного объекта? - PullRequest
1 голос
/ 16 мая 2011

Я использую отражение, чтобы получить значения свойств от неизвестного объекта.Я всегда знаю свойства неизвестного объекта во время выполнения.Итак, я просто хочу получить значения этих свойств из этого объекта.Отражение работает для меня, но у меня есть проблемы с производительностью.

Есть ли другой способ, которым мы можем достичь этого эффективно?Можем ли мы использовать сериализацию?Любой подход из коробки?

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Некоторое время назад я реализовал механизм доступа к свойствам, который использует Delegate.CreateDelegate и, кажется, быстрее, чем простое отражение.Вы можете найти его на GitHub .

0 голосов
/ 16 мая 2011

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

Если вы не можете изменить объекты напрямую, и они не запечатаны, вы можете извлечь класс из объекта и пометить егокак реализация интерфейса, и вам все еще нужно идти.

Кроме того, ваши проблемы производительности с отражением не обязательно должны исключать его использование.Запустите свои собственные исследования времени и посмотрите, стоит ли беспокоиться о снижении производительности.

Если вы используете отражение и заинтересованы в более чем одном свойстве, вам лучше будет один раз вызвать GetProperties и перейти к циклу, чтобы найтите, которые вам нужны, чем вызывать GetProperty несколько раз.

...