• .NET 反射 Reflect


    在这里插入图片描述

    Assembly a = Assembly.GetExecutingAssembly();
    object instance = a.CreateInstance(“Xianfen.NET.TestDynamic.Me”); //Me 是类
    Type type = instance.GetType();
    MethodInfo mi = type.GetMethod(“GetName”);
    object result = mi.Invoke(instance, null);
    Assembly myassembly = Assembly.LoadFile(@“C:\Users\WS\Desktop\WindowForm\StudyProgram\ClassLibrary\bin\Debug\ClassLibrary.dll”);
    Type type = myassembly.GetTypes()[0];
    MemberInfo[] members = type.GetMembers();
    FieldInfo[] fields = type.GetFields();
    Object[] params_obj = new Object[1];

    params_obj[0] = “jiaopeng”;
    string a = type.GetMethods()[0].ToString();
    object instance = myassembly.CreateInstance(myassembly.GetTypes()[0].FullName);
    type.GetField(“Name”).SetValue(instance, “张三”);
    object value = myassembly.GetTypes()[0].GetMethods()[0].Invoke(instance, new object[1] { “AAAA” });

    //加载程序集
    Assembly myassembly_2 = Assembly.LoadFile(@“C:\Users\WS\Desktop\Test\Winform\Client\Client\bin\Debug\Client.exe”);
    //获取类型
    Type[] type_2 = myassembly_2.GetTypes();
    //实例
    object instance_2 = myassembly_2.CreateInstance(type_2[0].FullName);
    (instance_2 as Form).Show();

    Assembly myassembly = Assembly.LoadFrom(@“C:\Users\WS\Desktop\WindowForm\StudyProgram\ClassLibrary\bin\Debug\ClassLibrary.dll”);
    Type[] type = myassembly.GetTypes();
    Type t_Function = myassembly.GetTypes()[0];
    AppDomain myDomain = AppDomain.CreateDomain(“NewDomain”);
    var aa = myassembly.GetTypes()[1].FullName;

    string a = myassembly.GetTypes()[0].Namespace;
    string b = myassembly.GetTypes()[0].ToString();
    var obj = myDomain.CreateInstance(“ClassLibrary”, “ClassLibrary.LoginInfo”).Unwrap();

    Type type1 = obj.GetType();

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    NewClassw nc = new NewClassw();
    Type t = nc.GetType(); 
    ConstructorInfo[] ci = t.GetConstructors();
    //获取类的所有构造函数
    foreach (ConstructorInfo c in ci) 
    //遍历每一个构造函数
     {
    	ParameterInfo[] ps = c.GetParameters(); 
    	//取出每个构造函数的所有参数
    	foreach (ParameterInfo pi in ps) {
    		//遍历并打印所该构造函数的所有参数 
    		Console.Write(pi.ParameterType.ToString()+" "+pi.Name+",");
    } 
    Console.WriteLine();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    创建实例2中方法
    1、构造函数
    Type t = typeof(NewClassw);
    Type[] pt = new Type[2];
    pt[0] = typeof(string);
    pt[1] = typeof(string);
    //根据参数类型获取构造函数
    ConstructorInfo ci = t.GetConstructor(pt);
    //构造Object数组,作为构造函数的输入参数
    object[] obj = new object[2]{“grayworm”,“hi.baidu.com/grayworm”};
    //调用构造函数生成对象
    object o = ci.Invoke(obj); /
    /调用生成的对象的方法测试是否对象生成成功
    //((NewClassw)o).show();
    2、Activator.CreateInstance
    Type t = typeof(NewClassw);
    //构造函数的参数
    object[] obj = new object[2] { “grayworm”, “hi.baidu.com/grayworm” };
    //用Activator的CreateInstance静态方法,生成新对象
    object o = Activator.CreateInstance(t,“grayworm”,“hi.baidu.com/grayworm”);
    //((NewClassw)o).show();
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    sqoop1.4.7完全支持Hadoop3.x, Hive3.x Hbase2.x
    MySQL数据库备份全攻略:从基础到高级,一文掌握所有备份技巧
    NX二次开发-基于PycharmIDE的NXOpen Python开发环境配置
    openwrt-编译模块-tc、nginx
    对象创建(一)
    AVFrame内存管理api
    大厂面试必备 - async/await 详解
    隐马尔可夫模型(一)Evaluation
    MySQL select count(*)计数很慢,有没有优化方案?
    week3 map
  • 原文地址:https://blog.csdn.net/u013400314/article/details/126620021