How to make VB.Net List class more flexible for the caller
I am new to generics and collections in VB.Net. I've written my first
class that creates a list of custom objects. While it seems to work, I
believe I've done it in a crude sort of way and I would like to know how
to improve it for the code that will need to invoke it. Here is the
essential part of the list class:
Public Class Subscribers
Public List As New List(Of Subscriber)
Public Sub New()
Dim sConnDatabase As String =
ConfigurationManager.ConnectionStrings("DatabaseConnString").ConnectionString
Dim connection As New SqlConnection(sConnDatabase)
Dim cmd As SqlCommand
cmd = New SqlCommand("SELECT * FROM dbo.Subscriber_v", connection)
cmd.CommandType = CommandType.Text
connection.Open()
Dim objReader As SqlDataReader = cmd.ExecuteReader()
Do While objReader.Read()
Dim id As Integer = objReader("SubscriberID")
Dim s As Subscriber = New Subscriber(id)
List.Add(s)
Loop
objReader.Close()
connection.Close()
End Sub
End Class
Here is my first little test for using the class:
Dim n As String
Dim d As Integer
Dim allSubs As New Subscribers()
For Each Subscriber In allSubs.List
n = Subscriber.SubscriberName
d = Subscriber.DaysUntilExpired.ToString()
Next
A specific question regarding improvement would be: how to enable the
caller to code something like:
For Each x In allSubs
n = x.SubscriberName
d = x.DaysUntilExpired.ToString()
Next
Would there be some way of coding the class such that the allSubs could be
expressed without having to also specify .List - and some way of
expressing it such that x would be recognized as being of type Subscriber.
No comments:
Post a Comment