Method to "override" shared Members in child classes
vb.net
Solution
I think you could use `Generics`. Here I´ve pasted an example
All the classes in your domain could inherit from Entity class
Public MustInherit Class Entity
'...
End Class
Your Model class, with your method Find
Public Class Model
Public Shared Sub Find(Of T As Entity)()
' You could know the name of T to find the table
Dim tableName As String = GetType(T).Name
'...
End Sub
End Class
One class of your domain, for example: User class
Public Class User
Inherits Entity
' ...
End Class
And finally, an example of how could you instantiate the Find method
Model.Find(Of User)()
'...
I dunno if this is what you mean, do you find this helpfull?
Problem
At the moment I'm trying to create a kind of model in vb.net which can be used to create/fetch database entrys. I created a main class Model with a shared function to fetch the datasets, e.g. Model.find(). Now I'd like to create Classes which inherit the main Model-Class, e.g. a separate one for users: UserModel.find() => "SELECT * FROM users". What I need now is to find a way to tell the Class which table it should use. I thought about an abstract String "table" which is a constant in each "child-model", but how could this be implemented as it's not possible to override shared members? Thanks in advance! Edit: Maybe this will make it a little clearer what I mean: ``` Public Class Model Public Shared _controller As Controller Public Shared table As String Protected Shared tableFields As String() Shared reader As Npgsql.NpgsqlDataReader Public Shared Function find() Dim a As ArrayList = New ArrayList 'Test if the tablefields are already known to the class, if not, get them If tableFields Is Nothing Then getTableFields() End If Dim query As String = "SELECT " + String.Join(", ", tableFields) + " FROM " + table reader = _controller.executeReader(query) While reader.Read o = New Model Dim v As New Hashtable For Each field In tableFields v(field) = reader(field) Next o.values = v a.Add(o) End While reader.Close() Return DirectCast(a.ToArray(GetType(Model)), Model()) End Function Public values As Hashtable Public Sub New() End Sub End Class ``` So I want a shared method which finds all database entries and gives back an array of instances of its own type, e.g. Model(). That's why I wanted to keep the find-method shared and not bound to an instance.