以下のコードを見てください。
Imports System.Data.SqlClient
Public Class Person
Private id As String
Private name As String
Public Function check(ByVal personid As String) As Boolean
'Do some checks on the person to see if it is ready for deletion
End Function
Public Shared Sub Delete()
Dim v As New Vehicle
Dim p As New Person
End Sub
End Class
Public Class Vehicle
Private vrm As String
Public Function check(ByVal vehicleid As String) As Boolean
'Do some checks on the vehicle to see if it is ready for deletion
End Function
Private Shared Sub Delete()
Dim p As New Person
Dim v As New Vehicle
Dim objCommand As SqlCommand
Dim objCon As SqlConnection
Dim objDR As SqlDataReader
Try
Dim _ConString As String = "Data Source=IANSCOMPUTER;Initial Catalog=Test;Integrated Security=True;MultipleActiveResultSets=true"
objCon = New SqlConnection(_ConString)
objCommand = New SqlCommand("SELECT * FROM Person were startdate < dateadd(year,-6," & Now & ")")
objDR = objCommand.ExecuteReader
Do While objDR.Read
If p.check(objDR("id")) And v.check(objDR("vehicleid")) Then
'Execute delete statement, which deletes the person and vehicle
End If
Loop
objDR.Close()
objCommand.Connection = objCon
objCon.Open()
objCommand.ExecuteNonQuery()
Catch ex As Exception
Throw
Finally
End Try
End Sub
End Class
共有関数 (Person.Delete) には Person と Vehicle への参照が含まれており、Person と Vehicle でインスタンス変数を使用していることに注意してください。基本的に、人物と車両を削除する前に、人物と車両に対してチェックを行う必要があります。
Shared 関数から Person と Vehicle を参照するのは不適切ですか? Delete 関数でインスタンス変数を使用するのはお粗末ですか。削除機能は、毎日何千人もの人や車を削除します。