zoukankan      html  css  js  c++  java
  • C# 通过反射动态创建对象的方法

    1、var val = (类型T)Assembly.Load("属性-》程序集名称").CreateInstance("属性-》命名空间.类型T名称", false);  具体参考Assembly类中的CreateInstance方法,重载方法中args可传入带参构造函数的参数,数组内顺序与类型必须与构造函数顺序及类型一致

    2、var val = (类型T)Activator.CreateInstance(typeof(类型),params object[] args ); 具体参考Activator类中的CreateInstance方法,重载方法中args可传入带参构造函数的参数,数组内顺序与类型必须与构造函数顺序及类型一致

    从dll库中调用时,应用如下

          Assembly assembly = Assembly.LoadFrom(@"e:AutoFormFirstForm.dll");//dll全路径

                    Type type = assembly.GetType("FirstForm.Form1");//类名称(全名)即:命名空间+类名称

              object obj = Activator.CreateInstance(type);

         Form formToShow = (Form)obj;

    1)首先是通过Assembly.LoadFrom()来加载dll文件; 2)再通过GetType()来获得要创建的Form类对象的类型。注意,在GetType()方法的参数为类型的名字,为string类型,同时该名字应为类型的FullName,即:命名空间名.类名; 3)然后通过Activator.CreateInstance()方法创建该类型对象,返回object对象。 4)再将该对象强制转换为Form类型。实际应用中,一般是扩展子类强转为父类,子类通过重写父类的方法来实现功能 ,或转为接口类型,类型通过显示实现接口来实现功能 5)最后调用即可。

  • 相关阅读:
    让人头疼的CSS兼容
    javascript IE与其他主流浏览器兼容性问题积累
    webpack全局安装后,提示webpack命令不可用的解决方法
    Vue Devtools的安装
    box-sizing属性
    margin-left和left的区别
    position定位解决弹框拖拽出屏幕的情况
    css单位的px,em,rem的区别总结笔记
    用css3的属性transform画一个太阳
    CSS高级技巧-转自51cto
  • 原文地址:https://www.cnblogs.com/-hwh/p/13964318.html
Copyright © 2011-2022 走看看