2012-07-03 143 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那麼也許將其添加爲自己的答案,所以很清楚下一個人。 –