Вопрос

В настоящее время я заполняю свою сетку WPF, используя сбор данных, который реализует ITypedList, с содержащимися в нем объектами , реализующими ICustomTypeDescriptor.Все свойства определяются во время выполнения.

Я хочу реализовать ГиперДескриптор чтобы ускорить производительность, но пример на этой странице больше относится к известным типам, а не к свойствам среды выполнения.

Я бы подумал, что мне нужно было бы реализовать пользовательский GetProperties() метод или аналогичный, чтобы сообщить HyperTypeDescriptor, на какие свойства ему нужно обратить внимание, но я не уверен, где это должно быть установлено.Я полагаю, это несложно, но я явно чего-то не понимаю.

Любые советы очень ценятся!

Это было полезно?

Решение

Тот самый HyperDescriptor реализация действительно специфична для свойств времени компиляции, поскольку она использует ILGenerator etc и кэширует сгенерированный код.Если вы используете ICustomDescriptor ты такой уже в совершенно другом профиле производительности - например, если ваш пользовательский PropertyDescriptorони работают со словарем или хэш-таблицей в качестве пакета свойств, который они могут уже быть значительно быстрее, чем необработанное отражение.

IT мочь можно было бы еще больше оптимизировать его, но мне нужно было бы знать больше о конкретной реализации.Но это была бы нетривиальная работа, поэтому сначала убедитесь, что этот доступ к участникам на самом деле является узким местом, и что вы не могли бы сначала сделать что-то простое, например, подкачку или "виртуальный режим".

(уточнение:Я автор HyperDescriptor, так что я хорошо знаю эту область)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top