How to use derived class shared variables in shared methods of base class
I am trying to add shared members in derived classes and use that values in base classes...
I have base
class DBLayer
    public shared function GetDetail(byval UIN as integer)
    dim StrSql = string.format("select * from {0} wh开发者_如何转开发ere uin = {1}", tablename, uin)
    ....
    end function
end class
my derived class
class User inherits dblayer
    public shared tabledname as string = "users"
end class
class item inherits dblayer
    public shared tabledname as string = "item"
end class
class category inherits dblayer
    public shared tabledname as string = "category"
end class
Currently there is an error using the tablename variable of a derived class in my base class.
Class User
    Inherits DBLayer
    Public Shared Shadows Function TableName() As String
        Return "users"
    End Function
    Public Overrides Function GetTableName() As String
        Return User.TableName
    End Function
End Class
MustInherit Class DBLayer
    MustOverride Function GetTableName() As String
    Public Function GetDetail(ByVal UIN As Integer)
        Return GetDetail(UIN, GetTableName)
    End Function
    Public Shared Function GetDetail(ByVal UIN As Integer, ByVal TableName As String)
        Dim StrSql As String = String.Format("select * from {0} where uin = {1}", TableName, UIN)
        Return StrSql
    End Function
End Class
Class DBLayer
    Private _tableName As String
    Public Property TableName() As String
        Get
            Return _tableName
        End Get
        Set(ByVal value As String)
            _tableName = value
        End Set
    End Property
    Public Sub New(ByVal tableName As String)
        _tableName = tableName
    End Sub
    Public Function GetDetail(ByVal UIN As Integer)
        Return GetDetail(UIN, Me.TableName)
    End Function
    Public Shared Function GetDetail(ByVal UIN As Integer, ByVal TableName As String)
        Dim StrSql As String = String.Format("select * from {0} where uin = {1}", TableName, UIN)
    End Function
End Class
I'd create
Protected MustInherit Readonly Property TableName as string
in the base class. And then each of the child classes would need to override it and return the correct name from the property.
So in one of the child classes it would be:
Protected OverRides Readonly Property TableName as string
   Get
       Return "users" ' or category or item etc
   End Get
End Property
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论