Kann man zwei Objekte ohne vergleichen, wenn man ihre Boxed-Typen zur Kompilierzeit kennt? Zum Beispiel, wenn ich eine object{long}
und object{int}
habe, gibt es eine Möglichkeit zu wissen, ob die Boxwerte gleich sind?Gekoppelte Objekte in C vergleichen #
Meine Methode ruft zwei generische object
s ab, und es gibt keine Möglichkeit zu wissen, was ihre inneren Typen zum Zeitpunkt der Kompilierung sind. Im Moment wird der Vergleich durch den folgenden Code aus:
_keyProperties[x].GetValue(entity, null).Equals(keyValues[x])
wo, sagen wir, _keyProperties[x].GetValue(entity, null)
ist ein object{long}
und keyValues[x]
ist ein object{int}
(aber sie auch umgekehrt werden kann).
Ich brauche dies, weil ich ein Mock-Repository für meine Komponententests erstellen, und ich habe begonnen, indem Sie eine allgemeine Repository-Implementierung wie beschrieben here. Diese Implementierung vergleicht zwei generische gefälschte DB-Schlüssel in seiner Find
-Methode.
Kennen Sie schon [diese Antwort] (http: // Stackoverflow .com/a/6669045/728795), besonders sein zweiter Teil? – Andrei
Natürlich tat ich, aber ich bekomme eine 'System.InvalidCastException' mit der Nachricht" Kann ein Null-Objekt nicht in einen Werttyp konvertieren ". – frapontillo
@frapontillo Müssen Sie nur noch einen Null-Check hinzufügen? –