C#中使用反射显示程序集的所有类型和属性
  /// <summary>
  /// 
  /// loads a *.dll file from txtMethods and invokes all methods int it. 
  /// lists all types in the assembly
  /// 
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnList_Click(object sender, System.EventArgs e)
  {
   string fileName=labelFile.Text.Trim();
   string result="";
   txtMethods.Text="";
   txtTypes.Text="";
   if(File.Exists(fileName))
   {
    try
    {
     Assembly assembly=Assembly.LoadFrom(fileName);
     Type[] types=assembly.GetTypes();
     result="The Assembly contains the following types :"+Environment.NewLine;
    
     for(int i=0;i<types.GetLength(0);++i)
     {
      result+="t "+i+":"+types[i].Name+" "+" "+Environment.NewLine;
      // Get the public methods.
      MethodInfo[] myArrayMethodInfo=types[i].GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
      txtMethods.Text=txtMethods.Text+Environment.NewLine+"The number of public methods in "+types[i].Name+" is "+myArrayMethodInfo.Length+Environment.NewLine;
      // get all the methods.
      txtMethods.Text=txtMethods.Text+getMethodInfo(myArrayMethodInfo);
      /*
      // Get the nonpublic methods.
      MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly);
      Console.WriteLine("nThe number of protected methods is {0}.", myArrayMethodInfo1.Length);
      // Display information for all methods.
      LabelFile.Text=DisplayMethodInfo(myArrayMethodInfo1);
      */
}
     foreach(Type myType in types)
     {
      // Get the public properties.
      PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public|BindingFlags.Instance);
      Console.WriteLine("The mumber of public properties in "+myType.Name+" is {0}.", myPropertyInfo.Length);
      // Display the public properties.
      getPropertyInfo(myPropertyInfo);
      // Get the nonpublic properties.
      PropertyInfo[] myPropertyInfo1 = myType.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
      txtMethods.Text=txtMethods.Text+Environment.NewLine+("The number of NonPublic properties in "+myType.Name+" is "+ myPropertyInfo1.Length)+Environment.NewLine;
      // Display all the nonpublic properties.
      txtMethods.Text=txtMethods.Text+getPropertyInfo(myPropertyInfo1);
     }
&nb
相关新闻>>
- 发表评论
- 
				
- 最新评论 进入详细评论页>>




