E 'possibile confrontare due oggetti senza conoscendo i loro tipi di box in fase di compilazione? Ad esempio, se ho un object{long}
e object{int}
, c'è un modo per sapere se i valori in scatola sono uguali?Confronta oggetti in scatola in C#
Il mio metodo recupera due generici object
s e non c'è modo di sapere quali sono i loro tipi interni in fase di compilazione. In questo momento, il confronto viene effettuato dal seguente codice:
_keyProperties[x].GetValue(entity, null).Equals(keyValues[x])
in cui, per esempio, è un _keyProperties[x].GetValue(entity, null)
object{long}
e keyValues[x]
è una object{int}
(ma possono essere invertiti pure).
Ho bisogno di questo perché sto costruendo un deposito fittizio per i miei test di unità e ho iniziato includendo un'implementazione di repository generica come descritto here. Questa implementazione confronta due chiavi generiche false-DB nel suo metodo Find
.
Hai visto [questa risposta] (http: // StackOverflow .com/a/6669045/728795), in particolare la sua seconda parte? – Andrei
Certo che l'ho fatto, ma sto ricevendo un 'System.InvalidCastException' con il messaggio" Impossibile convertire un oggetto nullo in un tipo di valore ". – frapontillo
@frapontillo Hai solo bisogno di aggiungere un controllo null allora? –