Generic for Loop Thru Records for two different Class Object :- Using Enum With Interface And Common Looping :

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


        Dim ArrEmpl As New ArrayList
        ArrEmpl.Add(New Employee("E1", 10, "M"))
        ArrEmpl.Add(New Employee("E2", 20, "M"))
        ArrEmpl.Add(New Employee("E3", 30, "M"))
        ArrEmpl.Add(New Employee("E4", 40, "M"))

        Call LoopThru(Of Employee)(ArrEmpl)

        ArrEmpl = New ArrayList
        ArrEmpl.Add(New Student("S1", 20, "M"))
        ArrEmpl.Add(New Student("S2", 21, "M"))
        ArrEmpl.Add(New Student("S3", 20, "M"))
        ArrEmpl.Add(New Student("S4", 20, "M"))

        Call LoopThru(Of Student)(ArrEmpl)

    End Sub


    Public Sub LoopThru(Of T)(Array As ArrayList)
        'This is done using generics. Where you can send any Type of Object.
        ' as Object is Comming out if Interface we can have any Object which is inherited from that Interface. So Common Logic for Looping can work

        Dim IEnum As IEnumerator
        IEnum = Array.GetEnumerator()

        While IEnum.MoveNext
            'Dim X As Object = CType(IEnum.Current, T)
            'Dim Value As IPerson = IEnum.Current
            'Dim Name As String = Value.Name
            TextBox1.AppendText(CType(IEnum.Current, IPerson).Age & ControlChars.NewLine)
        End While
    End Sub


    'Public Sub LoopThru(Array As ArrayList)
    '    Dim IEnum As IEnumerator
    '    IEnum = Array.GetEnumerator()

    '    While IEnum.MoveNext
    '        Dim X As String = CType(IEnum.Current, Employee).Name
    '    End While
    'End Sub

End Class


Public Interface IPerson
    Property Name As String
    Property Age As Integer
    Property Sex As String
End Interface

Public Class Employee
    Implements IPerson

    Public Sub New(NameValue As String, AgeValue As Integer, SexValue As String)
        Name = NameValue
        Age = AgeValue
        Sex = SexValue
    End Sub

    Public Property Age As Integer Implements IPerson.Age
    Public Property Name As String Implements IPerson.Name
    Public Property Sex As String Implements IPerson.Sex
    Public Property Salary As Double
End Class

Public Class Student
    Implements IPerson

    Public Sub New(NameValue As String, AgeValue As Integer, SexValue As String)
        Name = NameValue
        Age = AgeValue
        Sex = SexValue
    End Sub

    Public Property Age As Integer Implements IPerson.Age
    Public Property Name As String Implements IPerson.Name
    Public Property Sex As String Implements IPerson.Sex
    Public Property Fees As Double

End Class

Comments

Popular posts from this blog

Shared / Static Class in vb.net/C#

Xamarin Forms : PopUp Page with RG.Plugins.Popup

Text was truncated or one or more characters had no match in the target code page.". (SQL Server Import and Export Wizard)