我正在从事.NET 4项目,并且能够从动态属性访问中受益 HyperDescriptor 提供的,但在内置.NET 4时似乎无法正常工作。我从CodeProject下载了源,将项目转换为VS2010的解决方案,并将目标框架更新为4.0。在构建且示例正确执行时,定时显示了使用HyperDescriptor的动态属性访问是 最慢 获取/设置对象值的可能方法。

此问题只有在使用.NET 4中从源构建HyperDescriptor时,如果从.NET 4项目中添加了对使用.NET 2构建的HyperDescriptor的引用,则可以正常工作。目前,这是一个可以接受的解决方案,但是使用.NET 4构建会有一些潜在的优势吗?任何人都想在HyperDexcriptor上裂开,看看为什么使用.NET 4构建它如此慢?

有帮助吗?

解决方案

我下载了源代码,并使用.NET 4进行了测试。 InvalidOperationException 被扔并抓住,导致慢跑。

HyperTypeDescriptionProvider.BuildDescriptor 并替换:

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

经过:

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

Allflags被弃用,仅引起警告,但是从安全性透明方法主张的.NET 4中无效。 .NET框架4中的安全性更改4 了解更多信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top