Czy można porównać dwa obiekty bez znając ich typy pudełkowe w czasie kompilacji? Na przykład, jeśli mam object{long}
i object{int}
, czy istnieje sposób sprawdzenia, czy wartości w ramkach są równe?Porównaj obiekty w pudełku w C#
Moja metoda pobiera dwa ogólne object
s, i nie ma sposobu, aby dowiedzieć się, jakie są ich wewnętrzne typy podczas kompilacji. Teraz, porównania dokonuje się za pomocą następującego kodu:
_keyProperties[x].GetValue(entity, null).Equals(keyValues[x])
gdzie, powiedzmy, _keyProperties[x].GetValue(entity, null)
jest object{long}
i keyValues[x]
jest object{int}
(ale mogą być odwrócone, jak również).
Potrzebuję tego, ponieważ buduję fałszywe repozytorium dla testów jednostkowych, a ja zacząłem od włączenia ogólnej implementacji repozytorium zgodnie z opisem here. Ta implementacja porównuje dwa generyczne fałszywe-klucze DB w metodzie Find
.
Widziałeś [ta odpowiedź] (http: // stackoverflow .com/a/6669045/728795), szczególnie jego druga część? – Andrei
Oczywiście, że tak, ale dostaję "System.InvalidCastException" z komunikatem "Nie można przekonwertować obiektu zerowego na typ wartości". – frapontillo
@frapontillo Czy wystarczy dodać czek zerowy? –