加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 在子类中“覆盖”共享成员的方法

发布时间:2020-12-17 00:11:17 所属栏目:大数据 来源:网络整理
导读:目前我正在尝试在vb.net中创建一种可用于创建/获取数据库托管的模型. 我创建了一个主类Model,它带有一个共享函数来获取数据集,例如Model.find(). 现在我想创建继承主要Model-Class的类,例如用户单独的一个:UserModel.find()= “SELECT * FROM users”. 我现
目前我正在尝试在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

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

我想你可以使用泛型.这里我贴了一个例子

您域中的所有类都可以从Entity类继承

Public MustInherit Class Entity

    '...

End Class

您的Model类,使用您的方法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

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

Public Class User
    Inherits Entity

    ' ...

End Class

最后,举例说明如何实例化Find方法

Model.Find(Of User)()

'...

我不知道如果这是你的意思,你觉得这有用吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读