Я использую отражение, чтобы получить имена и значения свойств в ASP.NET, нужно несколько советов по оптимизации - PullRequest
2 голосов
/ 14 апреля 2011

Я использую отражение, чтобы получить свойства (как в свойствах {get; set}) и их значения. Я хотел бы оптимизировать это отражение. У меня нет доступа к коду клиентских классов, на которых я использую отражение, но после выяснения имен свойств соответствующего класса я буду снова и снова использовать одни и те же свойства.

Я делаю это в приложении ASP.NET, и поэтому я думал о сохранении некоторых кэшированных результатов в приложении (HttpContext.Current.Application), чтобы у первого пользователя была основная повышенная нагрузка на производительность, но, поскольку запросы масштабируют другие пользователи могут использовать кэшированные результаты первого пользователя.

Может ли Сомоне дать мне очень непонятное объяснение того, подходит ли здесь решение Марка Гравела или что-то вроде NHibernate подходит для этой ситуации? Или я должен просто кэшировать результаты получения имен свойств в классе с помощью отражения в списке, а затем использовать это, когда мне нужно перечислить имена свойств?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

HyperDescriptor предназначен для конкретной цели подгонки внутри API ComponentModel .Если вы не используете это, это может быть излишним.Простое кэширование данных внутри статического универсального типа может быть довольно эффективным, используя статический конструктор для заполнения данных.Под этим я подразумеваю: хранить данные для каждого T:

public static class PropertyCache<T>
{
    public static SomeType SomeName { get { return someField; } }
    static PropertyCache() {
        // init someField
    }
}
...
var foo = PropertyCache<Foo>.SomeName;
0 голосов
/ 16 декабря 2011

Вы ответили сами.

"Или я должен просто кэшировать результаты получения имен свойств в классе с помощью отражения в списке, а затем использовать это, когда мне нужно перечислить имена свойств?"

Я реализовал это с помощью хеш-таблицы.

Проверьте это: https://stackoverflow.com/a/8038933/497982

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