是否可以将两个相似的类函数包装到C#中的一个类中?

Ric*_*lis 2 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();
   }
  }
 }
Run Code Online (Sandbox Code Playgroud)

但我不禁怀疑没有更好的办法.

我遇到了TypeMap类(参见问题298976),这是一种更易读的方法,但我无法弄清楚如何使用返回值,但仍然想知道是否有更好的方法来做到这一点.

And*_*are 11

使用IDbConnection- 这两种类型都很常见.

SqlConnection继承DbConnection从而实现IDbConnection接口.此接口也由AdomdConnection.实现.

因此,您可以使用该IDbConnection接口来表示这两种类型