从.Net Framework 4.5移植到可移植类库配置文件或Windows应用商店应用时,反射重型库和应用程序的重大变化正在转换到Evolved Type System,即从{{1}移动} Type
。
以简单的方式进行操作并从中转换大量代码可能很诱人:
TypeInfo
......这样的事情:
someType.AccessReflectionAPI();
这会导致很多someType.GetTypeInfo().AccessReflectionAPI();
次来电,让我感到担忧。由于.Net Framework 4.5 GetTypeInfo
派生自TypeInfo
,Type
实现是微不足道的(甚至可能是JIT内联的?),但是Windows Store应用程序的实现和.Net核心?
在这些平台上调用GetTypeInfo 有多大影响?每次调用都会创建一个新对象吗?每次调用都意味着字典查找吗?这里的开销是多少?
答案 0 :(得分:0)
作为静态反射方法的GetTypeInfo不会创建新对象,因此唯一的开销是速度。你是正确的,因为大多数反射内容是JIT内联的,而基于C ++ / CLI的代码 - 性能确实不是我的经验中的问题。
如果你感兴趣的话,如果你在反射器或另一个装配检查员中查看mscorlib,那么反射api的内部结构很容易理解。