1
你好,我將通過說Im先前是一個asp開發人員,並正在學習oop編程/ Vb.Net有沒有辦法從類中的方法調用和使用類的類型? Vb.Net
我工作的3層架構,並試圖儘可能多地抽象我的代碼,因爲我有一個非常大的內部網絡進行轉換。在我的業務層中,我正在用管理方法定義我的類。下面是我的一個課程的例子。
我的問題:有沒有一種方法讓我泛泛地引用類的類型和對象類型,這樣我就不必在整個類中持續引用類名/類型「ServiceRequest」。例如類似:
"Public Function GetItem(ByVal ID As Integer) As Me.GetType"?
任何信息,如果這是可能的,我應該研究什麼話題,將不勝感激。如果我做了一些明顯錯誤的事情,請隨時對代碼進行評論。謝謝
Public Class ServiceRequest
Inherits DataUtility
#Region "Properties"
Public Property ReqID As Integer
' Public Property PrjID As Integer
Public Property EntBy As String
Public Property EntDate As DateTime
Public Property ServiceType As String
Public Property ResponseTime As String
Public Property ServiceReason As String
Public Property Comments As String
#End Region
#Region "Public Methods"
Public Function Save() As Integer
Return SaveRecord(GetParamsList(Me))
End Function
Public Function Delete(ByVal ID As Integer) As Boolean
Return DeleteRecord(ID)
End Function
Public Function GetItem(ByVal ID As Integer) As ServiceRequest
Dim retVal As ServiceRequest = New ServiceRequest()
Dim sdr As SqlDataReader = GetRecord(ID)
While sdr.Read()
retVal = ParseDataToObj(sdr)
End While
Return retVal
End Function
Public Function GetList(ByVal ID As Integer) As List(Of ServiceRequest)
Dim retVal As List(Of ServiceRequest) = New List(Of ServiceRequest)()
Dim sdr As SqlDataReader = GetRecords(ID)
While sdr.Read()
Dim listObj As ServiceRequest = ParseDataToObj(sdr)
retVal.Add(listObj)
End While
Return retVal
End Function
#End Region
#Region "Helper Methods "
Private Function GetParamsList(ByVal paramVal As ServiceRequest) As List(Of SqlParameter)
'Sending Data to SQL Server - Stored Procedures
Dim retVal As List(Of SqlParameter) = New List(Of SqlParameter)
With paramVal
retVal.Add(New SqlParameter("@ReqID", .ReqID))
'retVal.Add(New SqlParameter("@CusID", .CusID))
retVal.Add(New SqlParameter("@EntBy", .EntBy))
retVal.Add(New SqlParameter("@ServiceType", .ServiceType))
retVal.Add(New SqlParameter("@ResponseTime", .ResponseTime))
retVal.Add(New SqlParameter("@ServiceReason", .ServiceReason))
retVal.Add(New SqlParameter("@Comments", .Comments))
End With
Return retVal
End Function
Private Function ParseDataToObj(ByVal dr As SqlDataReader) As ServiceRequest
' Reading data and converts to object
' Single vs list - if boolean then get case types list
Dim returnObjData As New ServiceRequest()
With returnObjData
.ReqID = MyBase.GetDataValue(Of Integer)(dr, "ReqID")
'.CusID = MyBase.GetDataValue(Of Integer)(dr, "CusID")
.EntBy = MyBase.GetDataValue(Of String)(dr, "EntBy")
.EntDate = MyBase.GetDataValue(Of DateTime)(dr, "EntDate")
.ServiceType = MyBase.GetDataValue(Of String)(dr, "ServiceType")
.ResponseTime = MyBase.GetDataValue(Of String)(dr, "ResponseTime")
.ServiceReason = MyBase.GetDataValue(Of String)(dr, "ServiceReason")
.Comments = MyBase.GetDataValue(Of String)(dr, "Comments")
End With
Return returnObjData
End Function
#End Region
End Class
不,至少它不是我所知道的。但是如果有辦法,你應該避免它,因爲可讀性的原因。 – 2011-03-03 22:37:00