Csharp/C Sharp by API/System.Reflection/PropertyInfo

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

PropertyInfo.GetIndexParameters()

<source lang="csharp"> using System; using System.Collections; using System.Reflection; public class MainClass{

   public static void Main() {
       Assembly LoadedAsm = Assembly.LoadFrom("yourName");
       Console.WriteLine(LoadedAsm.FullName);
       Type[] LoadedTypes = LoadedAsm.GetTypes();
       if (LoadedTypes.Length == 0) {
           Console.WriteLine("\tNo Types!");
       } else {
           foreach (Type t in LoadedTypes) {
               if (t.IsPublic && !t.IsEnum && !t.IsValueType) {
                   Console.WriteLine("Type: {0}", t.FullName);
                   PrintPropertyInfo(t);
               }
           }
       }
   }
   private static void PrintPropertyInfo(Type t) {
       PropertyInfo[] props = t.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
       foreach (PropertyInfo p in props) {
           Console.WriteLine("Property: {0}", p.Name);
           Console.WriteLine("\tType {0}", p.PropertyType.FullName);
           if (p.CanRead)
               Console.WriteLine("Readable property.");
           if (p.CanWrite)
               Console.WriteLine("Writable property.");
           ParameterInfo[] pList = p.GetIndexParameters();
           if (pList.Length == 0) {
               Console.WriteLine("\tNo Parameters");
           } else {
               Console.WriteLine("\tParameter List:");
               foreach (ParameterInfo parm in pList) {
                   Console.WriteLine("\t\t{0} {1}", parm.ParameterType.FullName,parm.Name);
               }
           }
       }
   }

}


 </source>


PropertyInfo.MemberType

<source lang="csharp"> using System; using System.Reflection; class MainClass {

   public static void Main(string[] args) {
       ShowClasses(args[0]);
   }
   public static void ShowMethods(Type t) {
       MethodInfo[] methods = t.GetMethods();
       foreach (MethodInfo m in methods) {
           Console.WriteLine("\nMethod Name: {0}", m.Name);
           Console.WriteLine("Return Type: {0}", m.ReturnType);
       }
   }
   public static void ShowProperties(Type t) {
       PropertyInfo[] props = t.GetProperties();
       foreach (PropertyInfo p in props) {
           Console.WriteLine("\nProperty Name: {0}", p.Name);
           Console.WriteLine("Type: {0}", p.MemberType);
       }
   }
   public static void ShowClasses(string name) {
       Assembly assembly = Assembly.LoadFrom(name);
       if (assembly != null) {
           Type[] typeArray = assembly.GetTypes();
           Console.WriteLine("Assembly Name: {0}", name);
           foreach (Type type in typeArray) {
               if (type.IsClass) {
                   Console.WriteLine("Class: {0}", type.FullName);
                   ShowMethods(type);
                   ShowProperties(type);
               }
           }
       }
   }

}


 </source>


PropertyInfo.Name

<source lang="csharp"> using System; using System.Reflection; class MainClass {

   public static void Main(string[] args) {
       ShowClasses(args[0]);
   }
   public static void ShowMethods(Type t) {
       MethodInfo[] methods = t.GetMethods();
       foreach (MethodInfo m in methods) {
           Console.WriteLine("\nMethod Name: {0}", m.Name);
           Console.WriteLine("Return Type: {0}", m.ReturnType);
       }
   }
   public static void ShowProperties(Type t) {
       PropertyInfo[] props = t.GetProperties();
       foreach (PropertyInfo p in props) {
           Console.WriteLine("\nProperty Name: {0}", p.Name);
           Console.WriteLine("Type: {0}", p.MemberType);
       }
   }
   public static void ShowClasses(string name) {
       Assembly assembly = Assembly.LoadFrom(name);
       if (assembly != null) {
           Type[] typeArray = assembly.GetTypes();
           Console.WriteLine("Assembly Name: {0}", name);
           foreach (Type type in typeArray) {
               if (type.IsClass) {
                   Console.WriteLine("Class: {0}", type.FullName);
                   ShowMethods(type);
                   ShowProperties(type);
               }
           }
       }
   }

}


 </source>