2012-02-01 45 views
0

如何將從派生類初始化的對象傳遞給以Interface作爲參數的方法?下面是我正在嘗試的例子。可能嗎?請提出任何更好的方法。在C#或vb.net中使用接口作爲方法參數

Public Interface IFruit 
    Property Name As String 
    Property Color As String 
End Interface 



Public Class Fruit 
    Implements IFruit 
    Private _Name As String 
    Private _Color As String 

    Public Property Color As String Implements IFruit.Color 
     Get 
      Return _Color 
     End Get 
     Set(value As String) 
      _Color = value 
     End Set 
    End Property 

    Public Property Name As String Implements IFruit.Name 
     Get 
      Return _Name 
     End Get 
     Set(value As String) 
      _Name = value 
     End Set 
    End Property 
End Class 


Public Class FruitExtended 
    Inherits Fruit 

    Private _Taste As String 
    Public Property Taste() As String 
     Get 
      Return _Taste 
     End Get 
     Set(ByVal value As String) 
      _Taste = value 
     End Set 
    End Property 
End Class 

Public Class A 

Public Sub ProcessFruit(F as IFruit) 
'... 
'Do something 
End Sub 

下面的代碼可以工作嗎?或者如何以其他方式實現這一目標?

Public Sub Test() 
    Dim F1 as new FruitExtended() 
    ProcessFruit(F1) 
End sub 

End Class 
+0

你試過了嗎?只需要幾秒鐘就可以自己得到答案。 – Oded 2012-02-01 10:29:00

+0

我建議要做的事:'昏暗的F1作爲IFruit =新的FruitExtended()' – vulkanino 2012-02-01 10:36:16

+0

謝謝,明白了。假設如果我有一個從兩個接口(比如A,B)實現的類如何定義一個以接口爲參數的泛型方法?我的意思是該方法中應該是什麼類型的param(應該是A還是B)? – Dinu 2012-02-01 10:46:55

回答

0

我沒有嘗試你的代碼,但 - 一般 - 接口是好的,因爲它們定義一個behaviuor而不是一個狀態(屬性)。所以,也許你可以重新思考你的設計,並問自己ProcessFruit應該怎麼處理IFruit。

有些語言甚至不允許在接口中聲明屬性,而不是常量。 Java是一個例子。

相關問題