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
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
Post a Comment