zoukankan      html  css  js  c++  java
  • Type.GetType()陷阱

    在开发的过程中,偶尔会使用Type.GetType()动态获取一个类型。Type.GetType()方法有很多重载,其应用场景有所不同。笔者在项目中用到了GetType(string typeName, bool throwOnError)此方法,其中第一个参数要求传入一个Class的完全限定名,如:FF.Persistence.Driver.SQLite, FF.Persistence,第二个参数表示调用此方法异常是否抛出。

    关于typeName的说明如下:

    1)字符串的首尾不允许有空格,逗号前不允许有空格(笔者在项目中应该在逗号前多余了一个空格导致抛出无法找到类型的异常)

    2)完全限定名可以包含逗号后面的namespace,当然也可不包含

    关于跨进程的反射同样有两点要注意:

    1)typeof是支持强类型的,如:var t = typeof(FF.Persistence.Driver.SQLite) 前提是项目必须引用FF.Persistence程序集

    2)使用Type.GetType来进行反射,要明白Type.GetType是非强类型,如果参数typeName表示的目标类型不在当前程序集中,那么会返回null。解决办法是:

    var asmb = Assembly.LoadFrom("FF.Persistence.dll") ;
    var supType = asmb.GetType("FF.Persistence.Driver.SQLite") ;

    以上都是些小细节,如果留心会少走很多弯路。

    作者:Olar Tan
    出处:http://www.cnblogs.com/olartan
    ♪:没有做不到的 只有偷懒而错过的 ♪

  • 相关阅读:
    bzoj 3594: [Scoi2014]方伯伯的玉米田
    普通平衡树(指针splay)
    codeforces 475D. CGCDSSQ
    php 购物车功能
    PHP现阶段发现的不足点
    php 多维数据根据某个或多个字段排序
    redis可视化辅助工具
    Redis在window下安装以及配置
    hive数据操作
    hive 表分区操作
  • 原文地址:https://www.cnblogs.com/olartan/p/2268809.html
Copyright © 2011-2022 走看看