HyperDescriptor работает при создании в.NET 4?

Я работаю над.NET 4 проекта и смог бы извлечь выгоду из доступа динамического свойства, который обеспечивает HyperDescriptor, но это, кажется, не работает правильно при создании в.NET 4. Я загрузил источник с CodeProject, преобразовал решение проекты к VS2010 и обновил целевую платформу к 4,0. В то время как это создает, и образец выполняется правильно, синхронизации показывают, что доступ динамического свойства с HyperDescriptor является самым медленным способом получить/установить объектные значения.

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

8
задан Samuel Meacham 23 June 2010 в 21:40
поделиться

1 ответ

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

Перейдите к HyperTypeDescriptionProvider.BuildDescriptor и замените:

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

на:

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

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

13
ответ дан 5 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: