3

我正在尝试为我正在编写的硬件接口创建一些抽象级别,并且想知道是否有某种方法可以将多个接口分配为单个变量类型

想到的唯一方法是创建一个隐含 IDisposable 和 IDataEndPoint 的抽象类,然后将其用作我的变量类型和端点的基础

GoogleFu、Stack Overflow 和 MSDN 没有提供任何其他想法

干杯!

IE

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

如果接口中没有定义关系:基本上没有。除非 ifA是泛型类型(T例如 ),并且T有多个约束,并且该字段的类型是T。在这种情况下不太合适。

我只需将字段键入为有趣的类型 ( IDataEndpoint),然后将 dispose 处理为(用 C# 术语):

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