VB   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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

所以我想要一个共享方法,它找到所有数据库条目并返回一个自己类型的实例数组,例如模型().
这就是为什么我想保持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方法

@H_850_10@model.Find(Of User)() '...

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

大佬总结

以上是大佬教程为你收集整理的vb.net – 在子类中“覆盖”共享成员的方法全部内容,希望文章能够帮你解决vb.net – 在子类中“覆盖”共享成员的方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。