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里给出的说明误导了我,还是其中有什么玄机,请各位高人指点一二。
拜谢先。
 
冒昧发到首页,
----
 
 

 

posted @ 2009-04-16 09:33  mcjeremy  阅读(1052)  评论(4编辑  收藏  举报
------------------------------------ 心静似高山流水不动,心清若巫峰雾气不沾 ------------------------------------