在子类中"覆盖"共享成员的方法

ste*_*tex 6 vb.net

目前我正在尝试在vb.net中创建一种可用于创建/获取数据库托管的模型.

我创建了一个主类Model,它带有一个共享函数来获取数据集,例如Model.find().现在我想创建继承主要Model-Class的类,例如用户的单独类:UserModel.find()=>"SELECT*FROM users".

我现在需要的是找到一种方法来告诉Class它应该使用哪个表.我想到了一个抽象的字符串"表",它是每个"子模型"中的常量,但是如何实现它,因为它不可能覆盖共享成员?

提前致谢!

编辑:也许这会让我的意思更清楚一点:

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
Run Code Online (Sandbox Code Playgroud)

所以我想要一个共享方法,它找到所有数据库条目并返回一个自己类型的实例数组,例如Model().这就是为什么我想保持find-method共享而不是绑定到实例.

Jav*_*ier 4

我认为你可以使用Generics. 这里我\xc2\xb4ve粘贴了一个例子

\n\n

您域中的所有类都可以继承自实体类

\n\n
Public MustInherit Class Entity\n\n    '...\n\nEnd Class\n
Run Code Online (Sandbox Code Playgroud)\n\n

您的Model 类,以及您的方法 Find

\n\n
Public Class Model\n\n    Public Shared Sub Find(Of T As Entity)()\n\n        ' You could know the name of T to find the table\n\n        Dim tableName As String = GetType(T).Name\n\n        '... \n\n    End Sub\n\nEnd Class\n
Run Code Online (Sandbox Code Playgroud)\n\n

您的域的一类,例如:用户类

\n\n
Public Class User\n    Inherits Entity\n\n    ' ...\n\nEnd Class\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后,通过一个示例说明如何实例化 Find 方法

\n\n
Model.Find(Of User)()\n\n'...\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不知道这是否是你的意思,你觉得这有帮助吗?

\n