Ich weiß nicht, was meine Equals-Methode aufruft, denn wenn der Breakpoint getroffen wird, gibt es keinen Call-Stack (außer Equals selbst und [External Code]).Warum wird Equals aufgerufen, nachdem die Methode aufgelöst wurde?
Ich habe eine Klasse UserComplete, die Methoden GetAll und Equals und einige andere einschließlich eines Konstruktors, der ein Array von Objekten akzeptiert. UserComplete Erbt vom Benutzer. Die Benutzerklasse enthält die Methoden GetRows und Equals.
Equals ist nichts Besonderes:
Public Overrides Function Equals(obj As Object) As Boolean
If Not MyBase.Equals(obj) Then
Return False
End If
Dim u As UserComplete = CType(obj, UserComplete)
Return Me.RoleIds.Equals(u.RoleIds)
End Function
Und GetAll wandelt nur das Objekt()() aus der Datenbank oder Cache auf eine Liste von UserComplete
Public Function GetAll() As IList(Of UserComplete)
Dim rows As Object()() = GetRows()
If IsNothing(rows) Then
Return Nothing
End If
Dim completeUsers As List(Of UserComplete) = (From u In rows Select New UserComplete(DirectCast(u, Object()))).ToList()
If IsNothing(completeUsers) OrElse Not completeUsers.Any() Then
Return Nothing
End If
Return completeUsers
End Function
I GetAll von einem Service-Controller aufrufen und tatsächlich eine Antwort bekommen, kein Problem. Danach wird ein Breakpoint in Equals getroffen und obj ist eine List (Of Integers) mit einem Wert.
Wenn Sie dieses Verhalten erwarten würden, warum? Wenn nicht, können Sie erklären, warum es auftreten könnte und wie Sie es beheben können?