簡體   English   中英

是否可以將兩個相似的類函數包裝到C#中的一個類中?

[英]Is it possible to wrap two similar class functions into one class in C#?

我正在使用C#中的SqlConnection和AdomdConnection對象。

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),這是一種更易讀的方法,但我無法弄清楚如何使用返回值,但仍然想知道是否有更好的方法來做到這一點。

使用IDbConnection - 這兩種類型都很常見。

SqlConnection繼承自DbConnection ,后者又實現了IDbConnection接口。 此接口也由AdomdConnection實現。

因此,您可以使用IDbConnection接口來表示這兩種類型

SqlConnection由以下構造:DbConnection,ICloneable。

是的,它是,但DBConnection本身擴展並實現了Component, IDbConnection, IDisposable

所以你可以像IDbConnection一樣處理這兩個對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM