正在阅读:由C++转向C#需要注意的变化(五)由C++转向C#需要注意的变化(五)

2004-11-23 10:08 出处:CSDN 作者:AustinLei 责任编辑:linjixiong

  一旦加载了组合体,我们可以通过调用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


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品