zoukankan      html  css  js  c++  java
  • IDbConnection/DbConnection/***Connection在MSDN中的错误?

    最近用到System.Data.Common中的DBProviderFactory来根据所使用的数据库来自动构造查询语句等。

    其中看了一个IDBConnection、DBConnection、SqlConnection之间的实现及继承关系。

    按照DBProviderFactory的逻辑来讲,DbConnection应该实现IDBConnection接口。

    MSDN中给出的说明为:

    public abstract class DbConnection : Component, IDbConnection,IDisposable
    同时,给出了其相关继承关系:
    System.Object
      System.MarshalByRefObject
        System.ComponentModel.Component
          System.Data.Common.DbConnection
            System.Data.Odbc.OdbcConnection
            System.Data.OleDb.OleDbConnection
            System.Data.SqlClient.SqlConnection
            System.Data.OracleClient.OracleConnection
    那么,System.Data.SqlClient.SqlConnection应该是继承自DBConnection的,不然DBProviderFactory中怎么能实现Connection的多态呢?
    可是,在MSDN中,对SqlConnection的声明关系却是:
    public sealed class SqlConnection : Component, IDbConnection, ICloneable, IDisposable
    很明显没有继承自DbConnection,而是实现IDbConnection接口。
    ----
    很奇怪,既然DbConnection与SqlConnection之间并没有继承关系,而仅仅是都实现了IDbConnection,那它们之间是怎么实现多态的?
    ----
    反编译看了一个System.Data.SqlClient里的定义
    public sealed class SqlConnection : DbConnection, ICloneable
     
    两个地方的说明不一样,使用是当然是以DLL里的为准。
     
    ----
    不知道是MSDN里给出的说明误导了我,还是其中有什么玄机,请各位高人指点一二。
    拜谢先。
     
    冒昧发到首页,
    ----
     
     
  • 相关阅读:
    @Controller 与 @RestController 的区别
    Java泛型
    Java面试被经常问到的常用算法
    jdk和jre的区别
    Spring获取对象的方式
    xsi:schemaLocation的作用
    SpringBoot学习(一)
    docker-elk装IK自定义分词库
    MySQL存储引擎
    docker环境下elasticsearch安装ik和拼音分词
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1436948.html
Copyright © 2011-2022 走看看