• 0614小总结关于反射。


    0614总结

    1反射:就是动态获取程序集中的元数据操作类型的。简单的理解就是通过元数据创建对象、调用对象成员等。或者就是直接通过.dll来创建对象,调用成员。 

     

    2.Type类实现反射的一个的重要的类,通过它我们获取类中的所有信息包括方法属性等。

    通过类获得Type:Type t=typeof(Person);

    没对象typeof

    通过对象获得类的Type:Type t=p.GetType();

    有对象new之然后点之。

     

     

    3关于Assembly

    Assembly asm=Assembly.FileLoad(“dll的全路径”);

    调用AssemblyGetTypes()方法可以得到Assembly所有类型。返回的是Type数组。

    调用AssemblyGetExportedTypes()方法可以得到Assemblypublic类型。

    调用AssemblyGetType(name)方法可以得到Assembly定义全名为name的类型信息。

     

    4.关于动态创建对象

    Activator.CreateIntance(Type t)会动态调用类的无参构造函数来创建一个对象,返回值就是创建的对象,如果类没有无参构造函数就会报错。构造函数本身是默认有一个无参构造函数,写了就会覆盖掉无参的。故如要不报错,就不要写有参的构造函数,或者写了有参的,再手写一个无参的。

    GetConstructor(参数列表);此就是找到带参数的构造函数。如果参数列表中没有,就是调用无参的默认构造函数。

     

    5.Type类的方法:在编写调用插件的程序时,需要做一些验证。

    IsAssignableFrom(Type c):字面意思就是是否可以从c中赋值。判断当前的类型的变量是不是可接受c类型变量赋值。可想到Activator.CreatInstance(Type t)也就是调用类的无参构造函数创建一个对象。两者可先写后一个创建对象,后判断可是。

    IsInstanceOfType(object o):判断对象o是否是当前类的实例。当前类可以是o的父类、类或者接口。

    IsSubclassOf(Type c):判断当前类是否是类c的子类。此判断与接口无关。

    IsAbstract():判断是否是抽象的。包含接口。

     

    6.静态类是一个抽象且密封的类。只要不能被实例化的就是抽象的。

     

    7.Action是一定没有返回值的。

      Func只有一个泛型版本的。没有非泛型版本的。它是一定有返回值的。

     

    8.如果方法有返回值。直接调用Invoke的返回值。

     

     

  • 相关阅读:
    Windows Server 2003 服务器备份和恢复技巧
    查询表一张表的列名及字段类型
    aix 维护常用命令
    从 p12 格式 SSL 证书解出 pem 格式公钥私钥给 Postman 使用
    微信添加好友、加群的限制
    python requests 设置 proxy 和 SSL 证书
    blog post template(步骤类)
    post template(调查类)
    clip at cnblogs log
    《什么才是公司最好的福利》读后感
  • 原文地址:https://www.cnblogs.com/anmutu/p/3139585.html
Copyright © 2020-2023  润新知