• 通过反射实现多数据访问


    每种数据库都有自己的链接组件。比如:System.Data.SqlClient,System.Data.OracleClient,Oracle.DataAccess.Client,MySql.Data,IBM.Data.DB2,Sybase.Data.AseClient,iAnywhere.Data.AsaClient,Npgsql等等!

    反射:

    通过【Type类】可以访问任意数据类型信息,常使用Type类的静态方法GetType(),如Type t =Type.GetType("MySql.Data");这就拿到了组件(提前得先引用)的元数据。

    (1)通过【Assembly类】加载程序集,例如:Assembly  m_asmSqlClient = Assembly.LoadWithPartialName(“Oracle.DataAccess”);//LoadWithPartialName()使用部分名称从应用程序目录或从全局程序集缓存加载程序集。

    (2)Type m_typSqlConnection = m_asmSqlClient.GetType("Oracle.DataAccess.Client.OracleConnection" ) //GetType()可以得到加载进来的程序集中的类

    (3)ConstructorInfo info = m_typSqlConnection.GetConstructor(types); //GetConstructor(Type types )//根据参数类型得到实例,比如:Type[] types = new Type[1]; types[0] = Type.GetType("System.String"); 表示参数是字符串

    (4)IDbConnection con = info.Invoke(parameters) as IDbConnection; //Invoke()初始化传入符合的参数类型,得到需要的类,参数:object[] parameters = new object[1]; parameters[0] = “链接字符串”; 

    //【Type类】

    1.获取给定类型的Type引用有3种方式:
      a.使用typeof运算符,如Type t = typeof(int);
      b.使用GetType()方法,如int i;Type t = i.GetType();
      c.使用Type类的静态方法GetType(),如Type t =Type.GetType("System.Double");
    2.Type的属性:
      Name:数据类型名;
      FullName:数据类型的完全限定名,包括命名空间;
      Namespace:数据类型的命名空间;
      BaseType:直接基本类型;
      UnderlyingSystemType:映射类型;
    3.Type的方法:
      GetMethod():返回一个方法的信息;
      GetMethods():返回所有方法的信息。

    //【Assembly】

    System.Reflection.Assembly类是一个比较常用到的类,在反射中就经常用到。

    Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。

    在Assembly有很多的方法和属性,里面的加载程序集有3个方法,分别是Load、LoadFrom和LoadFile。

    //【ConstructorInfo 】

    ConstructorInfo 类可以发现类构造函数的属性 (Attribute) 并提供对构造函数元数据的访问权。说白了通过它可以访问类的属性和方法。

  • 相关阅读:
    source is null for getProperty(null, "cpmodel")异常结局
    insert时报Cannot add or update a child row: a foreign key constraint fails (`yanchangzichan`.`productstatusrecord`, CONSTRAINT `p_cu` FOREIGN KEY (`cid`) REFERENCES `customer` (`cid`))错误
    Python流程控制
    Python运算符
    Python字符串格式化输出
    Python数据强制类型转换
    Python数据类型
    Python input函数使用
    Python print函数使用
    Python变量
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5955919.html
Copyright © 2020-2023  润新知