Étant donné deux instances d'une classe, est-il une bonne et fiable pratique de les comparer en les sérialisant d'abord, puis en comparant les tableaux d'octets (ou éventuellement les hachages de tableaux). Ces objets peuvent avoir des propriétés hiérarchiques complexes, mais la sérialisation doit aller aussi loin que nécessaire. Par comparaison, je veux dire le processus de s'assurer que toutes les propriétés des types primitifs ont des valeurs égales, les propriétés des types complexes ont des propriétés égales des types primitifs, etc. Quant aux propriétés de collection, elles doivent être égales entre elles: égales éléments, les mêmes positions:Est-il fiable de comparer deux instances d'une classe en comparant leurs tableaux d'octets sérialisés?
{'a','b','c'} != {'a','c','b'}
{new Customer{Id=2, Name="abc"}, new Customer {Id=3, Name="def"}}
!=
{new Customer{Id=3, Name="def"}, new Customer {Id=2, Name="abc"}}
mais
{new Customer{Id=2, Name="abc"}, new Customer {Id=3, Name="def"}}
==
{new Customer{Id=2, Name="abc"}, new Customer {Id=3, Name="def"}}
Et par sérialisation je veux dire formatter binaire standard .NET.
Merci.
Dans quel but voudriez-vous faire ce genre de comparaison? Cela pourrait aider à fournir une réponse plus détaillée. – BlueMonkMN
Je connais actuellement deux façons de comparer des objets (ceux qui n'implémentent pas IComparable ou IEquattable), avec PropertyInfo et PropertyDescriptor. Ce pourrait être simplement un troisième outil dans ma boîte à outils. Mais je suis intéressé par l'applicabilité générale et la fiabilité de cette méthode. Peut-il donner de mauvais résultats? – Valentin