为变量类型分配多个接口

时间:2012-07-03 06:11:58

标签: .net vb.net

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

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

GoogleFu,Stack Overflow和MSDN havnt提供了任何其他想法

干杯!

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如果界面中没有定义关系:基本上没有。除非A是通用类型(例如T),T有多个约束,且字段类型为T。在这种情况下不太合适。

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

var disp = DataEndPoint as IDisposable;
if(disp != null) disp.Dispose();