zoukankan      html  css  js  c++  java
  • Assembly.CreateInstance()与Activator.CreateInstance()方法 (转)

    动态创建类对象,大多是Activator.CreateInstance()和Activator.CreateInstance<T>()方法,非常好用,一般都用了Assembly.Load("AssemblyName").CreateInstance ("ClassName");的方法,研究一下这两者到底有什么区别,在msdn里,查到了两个方法的介绍:

    Assembly.CreateInstance 方法 (String)

    使用区分大小写的搜索,从此程序集中查找指定的类型,然后使用系统激活器创建它的实例。

    Activator.CreateInstance 方法 (Type)

    使用与指定参数匹配程度最高的构造函数来创建指定类型的实例。

    看完以后,忽然觉得说了跟没说一样。不知道是我文字理解能力有问题,还是它表达有问题。

    于是,没办法,只好用Reflector看看源代码了。

    System.Reflection.Assembly位于mscorlib.dll里,CreateInstance()方法的源码是这样的

    public object CreateInstance(string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[]

    activationAttributes)
    {
          Type type1 = this.GetTypeInternal(typeName, false, ignoreCase, false);
          if (type1 == null)
          {
                return null;
          }
          //注意一下这一句,这里居然调用了Activator.CreateInstance方法

          return Activator.CreateInstance(type, bindingAttr, binder, args, culture, activationAttributes);

    }

    原帖地址: http://www.cnblogs.com/xiaotao823/archive/2008/05/02/1179119.html

    作者:BobLiu
    邮箱:lzd_ren@hotmail.com
    出处:http://www.cnblogs.com/liuzhendong
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Python脚本抓取京东手机的配置信息
    Python中的Pandas模块
    Python中的Pandas模块
    XML和JSON数据格式
    XML和JSON数据格式
    Linux运维比较常用的一些脚本
    Linux运维比较常用的一些脚本
    Keepalived高可用集群
    Keepalived高可用集群
    Linux中正则表达式和字符串的查询、替换(tr/diff/wc/find)
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2117474.html
Copyright © 2011-2022 走看看