Использование интерфейсов в качестве параметров метода в C # или vb.net - PullRequest
0 голосов
/ 01 февраля 2012

Как передать объект, который инициализируется из производного класса, в метод, в котором в качестве параметра используется интерфейс? Ниже приведен пример того, что я пытаюсь. Является ли это возможным? Пожалуйста, предложите какой-нибудь лучший способ сделать это.

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

1 Ответ

0 голосов
/ 01 февраля 2012

Я не пробовал ваш код, но - в целом - интерфейсы хороши, потому что они определяют поведение , а не состояние (свойства). Поэтому, возможно, вы могли бы переосмыслить свой дизайн и спросить себя, что ProcessFruit должен делать с IFruit.

Некоторые языки даже не позволяют объявлять свойства в интерфейсах, кроме констант. Java является примером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...