反射 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()
        { 
            
        }
    }
}
View Code

•调用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();
        }
    }
}
View Code

 

•调用Assembly的GetTypes()方法可以得到Assembly中定义的所有的类型。
•调用Assembly的GetType(name)方法可以得到Assembly中定义的全名为name的类型信息。
 
posted @ 2013-09-09 22:17  小新+  阅读(189)  评论(0)    收藏  举报