一旦加载了组合体,我们可以通过调用GetTypes返回一个Type对象数组。Type对象是映射的核心,它表示类、界面、数组、值和枚举等的类型定义。
| Type[]types=a.GetTypes(); |
组合休会返回一个类型的数组,我们可以使用foreach-loop结构显示该数组,其输出将有好几页文档之多,下面我们从中找一小段:
| TypeisSystem.TypeCode TypeisSystem.Security.Util.StringExpressionSet TypeisSystem.Text.UTF7Encoding$Encoder TypeisSystem.ArgIterator TypeisSystem.Runtime.Remoting.JITLookupTable 1205typesfound |
我们得到了一个内容为核心库中类型的数组,可以将它们都打印出来,该数组将有1205个项。 对一种类型映射我们也可以对组合体中一种类型进行映射。为此,我们可以使用GetType方法从组合体中解析出一个类型:
| publicclassTester { publicstaticvoidMain() { //检查一个对象 TypetheType=Type.GetType("System.Reflection.Assembly"); Console.WriteLine("\nSingleTypeis{0}\n",theType); } } |
输出如下所示:
| SingleTypeisSystem.Reflection.Assembly |
发现成员 我们还可以得到所有成员的类型,显示所有的方法、属性、域,下面的代码演示了实现上述目标的代码。
| Figure9GettingAllMembers publicclassTester { publicstaticvoidMain() { //检查一个单一的对象 TypetheType=Type.GetType("System.Reflection.Assembly"); Console.WriteLine("\nSingleTypeis{0}\n",theType); //获取所有的成员 MemberInfo[]mbrInfoArray= theType.GetMembers(BindingFlags.LookupAll); foreach(MemberInfombrInfoinmbrInfoArray) { Console.WriteLine("{0}isa{1}", mbrInfo,mbrInfo.MemberType.Format()); } } } |
尽管得到的输出还非常长,但在输出中我们可以得到如下面的不甘落后民示的域、方法、构造器和属性:
| System.Strings_localFilePrefixisaField BooleanIsDefined(System.Type)isaMethod Void.ctor()isaConstructor System.StringCodeBaseisaProperty System.StringCopiedCodeBaseisaProperty |
|