Вопрос

Я работаю над проектом .net 4 и смогу извлечь выгоду из доступа к динамическому имуществу, который Гипердескриптор Обеспечивает, но, похоже, он не работает должным образом при встроенном .NET 4. Я загрузил источник из CodeProject, преобразовал решение в проектах в VS2010 и обновил целевую структуру до 4.0. Пока он строится, и образец выполняется правильно, время показывает, что динамический доступ к свойствам с помощью гипердескрасира - это медленный Возможный способ получить/настройку значений объекта.

Эта проблема заключается только в том, что вы создаете гипердеспиритор из Source с .NET 4. Если из вашего проекта .NET 4 вы добавляете ссылку на Hyperdescriptor, построенный с .NET 2, он работает нормально. Это приемлемое решение на данный момент, но будет ли какое -то потенциальное преимущество для использования сборки .NET 4? Кто -нибудь хочет взломать гипердеспиритор, понимаете, почему он такой медленный со сборкой .NET 4?

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

Решение

Я скачал исходный код и запустил тест с .net 4. Есть впечатляющее количество InvalidOperationException бросил и поймал, вызывая медлительность.

Идти к HyperTypeDescriptionProvider.BuildDescriptor и заменить:

[ReflectionPermission(SecurityAction.Assert, Flags = ReflectionPermissionFlag.AllFlags)]

по:

[SecuritySafeCritical]
[ReflectionPermission(SecurityAction.Assert, Unrestricted = true)]

Allflags устарел и только вызывает предупреждение, но утверждение от прозрачного метода безопасности недопустимо в .net 4. См. Изменения безопасности в .NET Framework 4 за дополнительной информацией.

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