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
    ♪:没有做不到的 只有偷懒而错过的 ♪

  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/olartan/p/2268809.html
Copyright © 2011-2022 走看看