反射 Type类(*)
l参考教材:《C#高级编程》7.5、7.6
lType类可以叫做“类的类”,一个类型对应一个Type类的对象,通过Type对象可以获得类的所有的定义信息,比如类有哪些属性、哪些方法等。Type就是对类的描述。
l获得Type对象的方法:
•通过类获得Type:Type t = typeof(Person)
•通过对象获得类的Type:Type t = p.GetType()
namespace 程序集2 { class Program { static void Main(string[] args) { //通过类获得Type:Type t = typeof(Person) //没有对象的时候通过类来获得的描述 Type t1 = typeof(Dog); Dog d1 = new Dog(); //GetType()获得对象的类型的类型描述 Type t2 = d1.GetType();//d1指向的对象的类型描述 Console.WriteLine(t1); Console.ReadKey(); } } class Dog { public int Age { get; set; } public void wang() { } } }
•调用Assembly的GetExportedTypes方法可以得到Assembly中定义的所有的public类型。
namespace 程序集3 { class Program { static void Main(string[] args) { //动态创建一个类的对象 string filename = @"D:\net\学习\if语句\程序集测试\bin\Debug\程序集测试.dll"; //从文件中加载程序集 Assembly asm = Assembly.LoadFile(filename);//没有添加引用但是会动态添加程序集里面的类 Type t1 = asm.GetExportedTypes()[0]; //返回类型为object类型 object obj1 = Activator.CreateInstance(t1); Console.WriteLine(obj1);//obj1指向的是Person类的对象 Console.ReadKey(); } } }
•调用Assembly的GetTypes()方法可以得到Assembly中定义的所有的类型。
•调用Assembly的GetType(name)方法可以得到Assembly中定义的全名为name的类型信息。
浙公网安备 33010602011771号