Comparaison de deux objets de même type à l'aide de LINQ et de Reflection. NB ! Il s'agit essentiellement d'une réécriture de la solution de Jon Skeet, mais avec une syntaxe plus compacte et plus moderne. Elle devrait également générer une IL légèrement plus efficace.
Voici comment cela se passe :
public bool ReflectiveEquals(LocalHdTicket serverTicket, LocalHdTicket localTicket)
{
if (serverTicket == null && localTicket == null) return true;
if (serverTicket == null || localTicket == null) return false;
var firstType = serverTicket.GetType();
// Handle type mismatch anyway you please:
if(localTicket.GetType() != firstType) throw new Exception("Trying to compare two different object types!");
return !(from propertyInfo in firstType.GetProperties()
where propertyInfo.CanRead
let serverValue = propertyInfo.GetValue(serverTicket, null)
let localValue = propertyInfo.GetValue(localTicket, null)
where !Equals(serverValue, localValue)
select serverValue).Any();
}
0 votes
Je pense que cela vous aidera... Interroger les propriétés et les valeurs
0 votes
Je pense que cela vous aidera. Interroger les propriétés et les valeurs d'un objet .