C#:Type.GetType为System.Collections.Generic.Stack返回null

时间:2017-03-03 19:33:45

标签: c# .net c#-4.0

我跑

时得到null
Type.GetType(
    "System.Collections.Generic.Stack`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]")

当我跑

时,我得到了预期的类型
Type.GetType(
    "System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]")

Stack类型有什么问题?为什么GetType在这种情况下返回null?

1 个答案:

答案 0 :(得分:1)

您应该使用Type.AssemblyQualifiedName代替Type.FullName

Type.GetType("System.Collections.Generic.Stack`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

这正确地返回等效于typeof(Stack<Int32>)

的内容

这考虑到Stack与int和List(mscorlib)不在同一个程序集中,而是在System中,这就是为什么它在没有正确的程序集限定的情况下返回null的原因。