如何解决我正在使用反射来获取ASP.NET中的属性名称和值,需要有关优化的一些建议
|| 我正在使用反射来获取属性(如{get; set}属性)名称及其值。我想优化这种反思。我无法访问正在使用反射的客户端类的代码,但是在弄清楚所涉及类的属性名称之后,我将一次又一次地重复使用相同的属性。 我是在ASP.NET应用程序中执行此操作的,因此我考虑将一些缓存的结果存储在应用程序(HttpContext.Current.Application)中,这样第一个用户的主要性能负载将增加,但是随着请求的扩展,其他用户可以使用第一个用户的缓存结果。 NHibernate 马克·格雷夫(Marc Gravell)的HyperDescripter 有人问我马克·格雷夫(Marc Gravel)的解决方案是否合适,或者像NHibernate这样的解决方案是否适合这种情况?还是我应该只通过列表中的反射缓存在类中获取属性名称的结果,然后在需要枚举属性名称时使用它?解决方法
HyperDescriptor专门用于装配到ComponentModel API中。如果您不使用它,那可能是过大了。使用静态构造函数填充数据,仅将数据缓存在静态泛型类型中可能会非常有效。我的意思是:按T存储数据:
public static class PropertyCache<T>
{
public static SomeType SomeName { get { return someField; } }
static PropertyCache() {
// init someField
}
}
...
var foo = PropertyCache<Foo>.SomeName;
,你回答了你自己。
\“或者我应该只是通过反射在列表中缓存在类中获取属性名称的结果,然后在需要枚举属性名称时使用它吗?\”
我使用哈希表实现了这一点。
检查此:https://stackoverflow.com/a/8038933/497982
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。