2009-05-28 42 views
2

我正在使用C#中的SqlConnection和AdomdConnection對象。是否有可能將兩個相似的類函數包裝到C#中的一個類中?

SqlConnection由DbConnection,ICloneable構造而成。

AdomdConnection構造自:Component,IDbConnection,IDisposable,ICloneable。

我希望我可以使用通用的接口或類類型來傳遞,但這似乎並不是一種選擇,因爲它們不共享通用類型,我可以說。

他們都有類似的方法,我需要調用,但因爲我打算寫一些邏輯來調用它們,或者我想將它們包裝到自己的類中,然後調用該類並讓它擔心底層類型。

起初,我以爲我可以用這樣的:

public class ConnectionWrapper 
{ 
    protected object _Conn; 

    public ConnectionWrapper(object Conn) 
    { 
     _Conn = Conn; 
    } 

    public void Open() 
    { 
     if(_Conn is SqlConnection) { ((SqlConnection)_Conn).Open(); } 
     else if(_Conn is AdomdConnection) { ((AdomdConnection)_Conn).Open(); } 
    } 
} 

但我不禁想知道,有沒有更好的辦法來做到這一點。

我遇到了TypeMap類(參見問題298976),這將是一個更可讀的方式來做到這一點,但我不知道如何使用返回值,但仍然想知道是否有更好的方法去做吧。

+0

看起來像是你可以使用泛型解決。 – workmad3 2009-05-28 16:40:46

+0

但是你不需要這兩個連接類已經實現了相同的接口。 – 2009-05-28 16:45:59

回答

11

使用IDbConnection - 這兩種類型都是通用的。

SqlConnection繼承自DbConnection,其繼而實現IDbConnection接口。該接口也由AdomdConnection實現。

因此可以使用IDbConnection接口來代表這兩種類型的

2

SqlConnection的從構造:的DbConnection,ICloneable。

是的,它是,但DBConnection本身延伸,並實現Component, IDbConnection, IDisposable

所以,你可以同時處理對象作爲IDbConnection

相關問題