2012-07-03 100 views
3

我试图创建了一个抽象的硬件接口,我写的一些水平,并想知道是否有某种方式,我可以分配多个接口作为一个单一的变量类型分配多个接口变量类型

,想到的唯一方法是使impliments IDisposable接口和IDataEndPoint,然后用它作为我的变量类型和我的终点

基础

GoogleFu,堆栈溢出和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 
+1

为什么不让IDataEndpoint实现IDisposable?这样它可以被视为任何一个。 –

回答

2

为什么没有一个类型DataEndoint同时实现:

,我只想通过输入字段作为有趣型(IDataEndpoint),和处理处置为(在C#中的术语)做到这一点接口和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 
+0

确切地说,id做了什么,谢谢你的答案 – Oriphinz

1

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

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

感谢马克,原来我是一只火鸡,我已经IDataEndpoint继承了IDisposable 公用接口IDataEndpoint 继承了IDisposable 结束接口 – Oriphinz

+0

@ user1497843那么也许将其添加为自己的答案,所以很清楚下一个人。 –