0

I'm trying to teach myself reflection and have been googling but I can't wrap my head around it entirely. I created a class called DataClass which contains a method called GetClassFromDB as you can see below, which will be inherited from multiple classes.

What I am attempting to do is have my dataclass read the TableName property that is defined within objResults. Once I pull in the tablename from objResults I would query the SQL database for a dataset. Once I have the dataset I would create a new object of the same TYPE inheriting this class (Which will be different types) and populate it from the dataset. Once I have the newly populated class I will return it for use.

I believe I have gotten most of the way there properly (Please correct me if there is a better way), but my real question is this. How can I create a new class of the type thats deriving that class from that string name that I getting in my code, or the type. I would want to have all the accessible properties from objResults available.

Namespace MyApp
Public Class DataClass
    Private _TableName As String
    Private _Name As String

    Overridable ReadOnly Property TableName As String
        Get
            Return _TableName
        End Get
    End Property

    Public Overloads Function GetClassFromDB() As Object
        Try
            Dim BaseObject As New Object
            'Get the object name
            Dim objName As String = MyBase.GetType().Name

            'Gets the type thats calling this method
            Dim objDerived As Type = MyBase.GetType()

            'Get the property info to request the tablename from the derived class
            Dim TableName As PropertyInfo = objDerived.GetProperty("TableName")
            Dim TableNameString As String = TableName.GetValue(Me, Nothing).ToString

            'Once I get the table name from objResults I can perform the SQL
            Dim QueryResults as DataSet = SQLiteCLass.Query("Select * FROM TableNameString")

            'Once I get data from the SQL I want to create a new object of the type deriving this method.
            'In this example is objResults
            Dim NewObject as objDerived

            'Now I can fill my new object with the results and return it as an object

            'THIS IS MY QUESTION - How can I create a new object of the TYPE that I receive from Reflection
            Return False
        Catch ex As Exception
            Return False
        End Try
    End Function

End Class
End Namespace

and this is a sample class that would inherit my dataclass.

Public Class objResults
Inherits MyApp.DataClass

Private _GameID As Guid

Public Property GameID As Guid
    Get
        Return _GameID
    End Get
    Set(ByVal value As Guid)
        _GameID = value
    End Set
End Property

Public Overrides ReadOnly Property TableName As String
    Get
        Return "This is my tablename"
    End Get
End Property
End Class

and this is how I would use this in code.

Dim objResult as New objResults
Dim TodaysResult as objResultsCollection

TodaysResult = objResult.GetClassFromDB()
joeb
  • 777
  • 8
  • 28

0 Answers0