3

私が書いているハードウェアインターフェイスの抽象化のいくつかのレベルを作成しようとしていますが、複数のインターフェイスを単一の変数型として割り当てることができる方法があるかどうか疑問に思っていました

頭に浮かぶ唯一の方法は、 IDisposable と IDataEndPoint を実装する抽象クラスを作成し、それを変数の型とエンドポイントのベースとして使用することです

GoogleFu、Stack Overflow、および MSDN は他のアイデアを提供していません

乾杯!

すなわち

Public Class A
  Impliments IDisposable

Public ReadOnly DataEndpoint as IDataEndpoint, IDisposable <---- something like this

Protected Overridable Sub Dispose(disposing as Boolean)
  if disposing then
    DataEndPoint.Dispose
  end if
End Sub
Public Sub Dispose() Impliments IDisposable.Dispose
  Dispose(True)
  GC.SuppressFinalize(Me)
End Sub
End Class
4

2 に答える 2

2

必要なときに必要なインターフェイスにDataEndointインターフェイスとプロパティの両方を実装する型を持たないのはなぜですか?DirectCast

Public Class DataEndpoint 
  Implements IDataEndpoint, IDisposable

  'Implementation ...

End Class

Public Class A
  Implements IDisposable

Public ReadOnly DataEndpoint as DataEndpoint

Protected Overridable Sub Dispose(disposing as Boolean)
  if disposing then
    DirectCast(DataEndPoint, IDisposable).Dispose
  end if
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
  Dispose(True)
  GC.SuppressFinalize(Me)
End Sub
End Class
于 2012-07-03T06:31:23.307 に答える
1

関係がインターフェースで定義されていない場合:いいえ、基本的に。Aジェネリック型(Tたとえば)であり、T複数の制約があり、フィールドが型であった場合を除きTます。この場合、実際には適切ではありません。

これを行うには、フィールドを興味深いタイプ(IDataEndpoint)として入力し、disposeを(C#の用語で)として処理します。

var disp = DataEndPoint as IDisposable;
if(disp != null) disp.Dispose();
于 2012-07-03T06:25:59.640 に答える