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(). 我现在需要的是找到一种方法来告诉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 所以我想要一个共享方法,它找到所有数据库条目并返回一个自己类型的实例数组,例如模型().
我想你可以使用泛型.这里我贴了一个例子
您域中的所有类都可以从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)() '... 我不知道如果这是你的意思,你觉得这有用吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |