.net Reflection(反射)- 一

2020-12-13 02:16

阅读:591

标签:des   style   blog   class   code   java   

  Reflection 反射需要引用 using System.Reflection; 命名空间。

   通过 Assembly 类的 Load( ); 加载指定的 程序集

     Assembly 是不能被实例化, 所以能通过调用静态方法Load();加载指定程序集。

     通过GetType()RefLiuyl中GetCond的类型

?
1
2
3
Assembly assembly = Assembly.Load("RefLiuyl");          
//获取类型,参数(名称空间+类)  
Type type = assembly.GetType("RefLiuyl.GetCon");

 还有一种当使用泛型的时候 GetName() 。 直接 获取类型Type type = typeof(T);

 

 我们来看看部分内部Load原型静态方法:

soscw.com,搜素材
    //Assembly内部Load原型 --部分
    public class Assembly
    {
        //Load静态重载原型
        public static Assembly Load(AssemblyName assemblyRef);
        public static Assembly Load(string assemblyString);
    }
soscw.com,搜素材

 

这里的 AssemblyName 其实就是取 程序集
 AssemblyName classlibrary = new AssemblyName("ClassLibrary");
 Assembly assembly = Assembly.Load(classlibrary);

 Assembly 还可以通过路径来加载程序集

  Assembly assem = Assembly.LoadFrom("path");

    //Assembly内部Load原型 --部分
    public class Assembly
    {
        //Load静态重载原型 
        public static Assembly LoadFrom(string path);
    }

 

二。构造类型的实例

?
1
2
3
Assembly assembly = Assembly.Load("RefLiuyl");          
//获取类型,参数(名称空间+类)  
Type type = assembly.GetType("RefLiuyl.GetCon");
获取到类型后,我们需要实例化它。

通过System.Activator的CreateInstance方法来实例化它。
soscw.com,搜素材
            AssemblyName classlibrary = new AssemblyName("ClassLibrary");

           // Assembly assembly = Assembly.Load(classlibrary);
            Assembly assembly = Assembly.Load("ClassLibrary");

            //通过GetType()获取类型
            //获取类型,参数(名称空间+类)   
            Type type = assembly.GetType("ClassLibrary.Student");

            //创建该对象的实例,object类型,参数(名称空间+类)   
            object instance = assembly.CreateInstance("ClassLibrary.Student");

            //或者直接使用type
            object instance1 = Activator.CreateInstance(type);

            //当使用泛型
            Type type = typeof(T);
            T destObj = Activator.CreateInstance();
soscw.com,搜素材
 Activator.CreateInstance(); 返回的就是 类实例


GetProperties(); 返回程序集类型中的所有属性

soscw.com,搜素材
            //通过GetType()获取类型
            //获取类型,参数(名称空间+类)   
            Type type = assembly.GetType("ClassLibrary.Student");
            foreach (PropertyInfo prop in type.GetProperties())
            {
                string namses= prop.Name;
            }
soscw.com,搜素材

返回的就是 程序集中 实例类的属性字段。

 

.net Reflection(反射)- 一,搜素材,soscw.com

.net Reflection(反射)- 一

标签:des   style   blog   class   code   java   

原文地址:http://www.cnblogs.com/dragon-L/p/3711931.html


评论


亲,登录后才可以留言!