MakeArrayType()
如果我们想制作特定类型的数组类型,使用它是没有问题的,例如char
数组:
typeof(char).MakeArrayType()
当然使用起来更直观typeof(char[])
。
并且类型的属性Assembly
告诉我们该类型在哪里的程序集。
因此,以下代码应该是在程序集中查找类型的合理示例:
var chars=new[] { '\x20' };
var typeofCharArray=chars.GetType();
var assembly=typeofCharArray.Assembly;
var doesContain=assembly.GetTypes().Contains(typeofCharArray);
但是doesContain
说它没有,它是false
。无论数组类型是来自MakeArrayType()
ortypeof()
还是实例的 ,都会发生这种情况GetType
。
怀疑它是否已转发到我从Assembly.GetTypes中读取的其他程序集。我试过了:
var assemblyContainsTypeOfCharArray=(
from it in AppDomain.CurrentDomain.GetAssemblies()
let types=it.GetTypes()
where types.Contains(typeof(char[]))
select it).FirstOrDefault();
有趣的assemblyContainsTypeOfCharArray
是null
。
数组类型在哪里?