zoukankan      html  css  js  c++  java
  • c# 反射

    //0、动态加载 程序集 文件 利用Assembly类

    Assembly assembly = Assembly.LoadFile("c:	est.dll");
    Type[] type = assembly.GetTypes(); //私有,公有所有类都能获取到
    Type type_single = assembly.GetType("test.person"); //只拿到 指定的类 参数为“完全限定名称”。即 命名空间.类名
    Type[] type_public = assembly.GetExportedTypes(); //只获取 公有 类型
    

    //1、获取Type类型 两种方式

    Person p=new Person ();
    Type type1 = p.GetType(); //当有对象的时候 使用GetType
    Type type2 = typeof(Person);//当没有对象的时候 使用typeof
    

    //2、获取类型元数据 中的所有方法 (获取所有Public方法。包括属性方法和父类继承下来的方法。不包括私有方法。要获取私有方法需要使用其他方式)

    MethodInfo[] methods=type2.GetMethods();
    for (int i = 0; i < methods.Length; i++)
    {
    Console.WriteLine(methods[i].Name.ToString());
    }
    

    //调用方法 第一个参数需要通过反射创建对象

    MethodInfo method_single = type2.GetMethod("SayHi"); //如果方法重载 则需要type2.GetMethod("SayHi",new Type[]{typeof(int),typeof(string)})
    object obj = Activator.CreateInstance(type2); //第一个参数
    object result = method_single.Invoke(obj, new object[] { 100, 200 }); //利用Invoke方法 带参数调用,不带参数 method_single.Invoke(obj,null);
    

    //3、获取 类型元数据 中的所有属性

    PropertyInfo[] properties= type2.GetProperties();
    for (int i = 0; i < properties.Length; i++)
    {
    Console.WriteLine(properties[i].Name.ToString());
    }
    //属性赋值
    PropertyInfo property = type2.GetProperty("Name");
    object obj2 = Activator.CreateInstance(type2); //第一个参数
    property.SetValue(obj2,"刘志新",null);
    property.GetValue(obj2, null);//获取属性

    //4、获取 类型元数据中 所有字段 (私有的获取不到)

    FieldInfo[] fields=type2.GetFields();
    for (int i = 0; i < fields.Length; i++)
    {
    Console.WriteLine(fields[i].Name.ToString());
    }
    

    //5、类中还有好多的东东,都可以通过.get 来获取。自己看吧

  • 相关阅读:
    自动添加控件,一次提交多条记录。
    Asp.Net 2.0 的 Master Page(母版页)
    vs2008中文版提供下载(包含中文msdn),包括vs2008序列号和破解方法。
    C# 2.0 :仿MSN提示框or仿迅雷提示框(.Net2.0).rar
    httpanalyzer 结合 HttpWebRequest Post的运用
    xp访问权限问题的解决(绝对有效)
    Request.params、Request、Request.querystring、Request.Form 具体区别!
    C# List<> 泛型中遍历不同类型
    备份与恢复数据库的存储过程
    .Net 生成不重复的随机数
  • 原文地址:https://www.cnblogs.com/crhdyl/p/4902967.html
Copyright © 2011-2022 走看看