反射_获取类的信息

通过C#中的type类获取类中的字段、属性、方法等相关信息。

    /// <summary>
    /// 通过type类获取类中的公有字段,属性和方法
    /// </summary>
    ///
    class newClass
    {
        public string Id01;
        public string Id02;
        public string Id03;

        public string Name01 { get; set; }
        public string Name02 { get; set; }
        public string Name03 { get; set; }

        public void Method01()
        {
        }
        public void Method02()
        {
        }
        public void Method03()
        {
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            newClass testClass = new ReflectionTest01.newClass();
            testClass.Id01 = "01";
            testClass.Id02 = "02";
            testClass.Id03 = "03";
            testClass.Name01 = "name01";
            testClass.Name02 = "name02";
            testClass.Name03 = "name03";

            Type type = testClass.GetType();
             //获取基本属性
            //获取类名
            Console.WriteLine(type.Name);
            //获取命名空间
            Console.WriteLine(type.Namespace);
            //获取命名空间
            Console.WriteLine(type.Assembly);
            //获取public的字段
            FieldInfo[] fields = type.GetFields();
            foreach(FieldInfo info in fields)
            {
                Console.Write(info.Name+" ");
                Console.Write(info.GetValue(testClass)+ " ");
            }
            Console.WriteLine();
            //获取属性
            PropertyInfo[] props = type.GetProperties();
            foreach (PropertyInfo info in props)
            {
                Console.Write(info.Name + " ");
                Console.Write(info.GetValue(testClass)+ " ");//获取对应的值
            }
            Console.WriteLine();
            //获取方法

            MethodInfo[] methods = type.GetMethods();
            foreach (MethodInfo info in methods)
            {
                Console.Write(info.Name + " ");
            }
            Console.WriteLine();

            Console.ReadKey();
        }
    }

可以通过EventInfo[] events=type.GetEvents();获取类的事件。

时间: 2024-10-07 05:29:47

反射_获取类的信息的相关文章

反射之获取类,方法等

1 反射之获取类      获取类有三种方法 public interface Person { public void sayHi(); }   public class Student  implements Person{ private String id; private String name; private int age; public int sex=1; //省去构造方法和get set方法 } Class c1 = Student.class; Class c2=Clas

反射之获取类,方法(0)

1 反射之获取类      获取类有三种方法 public interface Person { public void sayHi(); }   public class Student  implements Person{ private String id; private String name; private int age; public int sex=1; //省去构造方法和get set方法 } Class c1 = Student.class; Class c2=Clas

C#使用反射机制获取类信息[转]

http://www.cnblogs.com/zhoufoxcn/archive/2006/10/31/2515873.html 1.用反射动态创建类实例,并调用其公有成员函数. //新建一个类库项目,增加一个GetSum方法. using System; namespace ClassLibrary1 { public class Class1 { public Class1() { } public int GetSum(int x, int y) { return x + y; } } }

java 反射机制-获取对应class信息

1 package reflection; 2 3 public class User { 4 public String name; 5 protected int age; 6 String address; 7 private String sex; 8 9 public User() { 10 super(); 11 } 12 13 public User(String name, int age, String sex) { 14 super(); 15 this.name = nam

反射机制--获取类的方法

一.反射机制获取一个类的方法 1.使用class属性 类名.class 2.使用Class类的forName("类名")方法, Class.forName("类名") 3.new一个类然后调getClass()方法 new 类名().getClass() 实例: public void text() throws ClassNotFoundException{ //第一种方式 Class cla = Integer.class; //第二种方式 Class cla2

反射之获取类,属性,方法,接口,父类等

获取类有三种方法 实体类和接口 public interface Person { public void sayHi(); } public class Student  implements Person{ private String id; private String name; private int age; public int sex=1; /*get和set方法省略*/ } Class c1 = Student.class; Class c2=Class.forName("c

通过反射获取类的信息

每个类被加载扣,系统就会为该类生成一个对应的Class对象,通过该Class对象就可以访问到java虚拟机中的这个类.java程序中获得class对象通常有如下3种方式. 1).调用对的getClass()方法 Student student=new Student(); Class cla=student.getClass(); 2).调用类的class属性 Class cla=Student.class; 3).使用Class类的forName()静态方法(不常用)

反射__获取delegate的信息

参考网址:http://stackoverflow.com/questions/429552/can-i-get-the-signature-of-a-c-sharp-delegate-by-its-type 1.我的测试代码: namespace RefTest01 { [UnmanagedFunctionPointer(CallingConvention.StdCall)] public delegate void D_Test01(int _i); // *** public partia

通过反射,获取类的属性

http://stackoverflow.com/questions/3723934/using-propertyinfo-to-find-out-the-property-type https://www.codewars.com/kata/56c22c5ae8b139416c00175d/train/csharp using StriveObjects; using System.Reflection; using System; public class Strive { public s