【发布时间】:2012-01-12 16:01:49
【问题描述】:
例如Type.GetType(".System.Collections.ArrayList", false, false) 与 Type.GetType("System.Collections.ArrayList", false, false)
我认为这些是等价的,但我注意到前者需要两倍的时间来解决,并且在进一步调查后我找不到对前者的明确支持:http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx。
这些是等价的吗?如果是,知道为什么前者要解决后者两倍的时间吗?
【问题讨论】:
-
为什么类型名称以 . ?
-
@HansPassant - 在我看来,以
.开头的意思是“查看'全局'命名空间”......从实际的角度来看,如果你有一个“开放”命名空间列表,你'想尝试解析一个可能不是完全限定的类型名称,使用[""; "System"; "System.Collections"]之类的列表更容易,其中""代表这个虚构的“全局”命名空间,以便您可以尝试所有组合加入命名空间列表使用.分隔符的可能类型名称,没有特殊大小写类型名称可能是完全限定的 -
看grammar for type names,好像是允许前导句的bug。
-
@StephenSwensen:在没有全局命名空间说明符的情况下,您可以使用程序集名称来完全限定吗?
-
@Daniel - 我倾向于同意允许领先时期必须是一个错误(BNF 是一个很好的支持来源)。我注意到其他一些奇怪的迹象:调用
Type.GetType("..",true,true)将导致异常消息“无法加载类型'。'”......它正在剥离单个前导'。'忘记它曾经做过。
标签: c# .net reflection .net-4.0 f#