используя отражение для этого, есть ли другой способ? - PullRequest
2 голосов
/ 29 ноября 2009

У меня есть список пар ключей-значений (строка, строка). Первая строка - это что-то вроде class.property, вторая строка - это значение, назначаемое этому class.property.

В настоящее время я перебираю этот список и, используя отражение, я устанавливаю каждое значение.

это работает, но мой вопрос, есть ли более быстрый способ сделать это?

Ответы [ 2 ]

3 голосов
/ 29 ноября 2009

Если вы неоднократно используете одно и то же свойство (например, для множества целевых объектов), быстрее собрать делегата из установщика с использованием Delegate.CreateDelegate и использовать его. Тем не менее, я сделал бы это только тогда, когда я его профилировал и обнаружил, что это узкое место. Это имело большое значение для моей реализации буфера протокола, но это действительно должно быть как можно быстрее, поэтому я рад применить небольшую микрооптимизацию.

0 голосов
/ 29 ноября 2009

Если вам нужно установить одно и то же свойство или свойства одного и того же типа более одного раза, кэшируйте ваши Type и PropertyInfo. Кэшировать это очень просто - и изучение типов - это то, что обычно занимает время в сценариях отражения.

Если вы можете использовать C # 4 для этого, вы можете найти более быстрое решение, используя dynamic . (Я видел тег .NET 3.5, просто подумал, что упомяну его).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...