J'ai deux objets avec ces définitions :
public static Dictionary<string, Container> cont1 = new Dictionary<string, Container>();
public static Dictionary<string, Container> cont2 = new Dictionary<string, Container>();
Le schéma de la classe Container est le suivant :
public class Container
{
public string IDx { get; set; }
public string IDy { get; set; }
public string Name { get; set; }
public Dictionary<string, Sub> Subs = new Dictionary<string, Sub>();
}
public class Sub
{
public string Namex { get; set; }
public string Namey { get; set; }
public string Value { get; set; }
public Dictionary<string, string> Paths { get; set; }
}
Ma question est la suivante : comment puis-je vérification approfondie l'équité de cont1 et cont2 ? Je veux dire l'égalité de chaque membre et de chaque valeur, même au plus profond des objets de Subs ;
Existe-t-il une fonctionnalité en c# pour de telles situations ou dois-je écrire moi-même une méthode personnalisée pour vérifier l'égalité sur la base de la structure des objets ?
Deuxième question : Je peux éviter le problème d'égalité si je peux créer deux copies différentes de Products ; je veux dire que nous avons un objet Container de base avec tous les membres et toutes les valeurs et que nous créons ensuite deux exemplaires séparés de conteneurs, à savoir cont1 et cont2, pour lesquels le changement d'une valeur dans cont1 ne changera pas la même valeur dans cont2.
Note1 Cette méthode de clonage ne fonctionne pas :
cont2 = new Dictionary<string, Container>(cont1);
Note2 La plupart des méthodes proposées dans les autres réponses sont basées sur un dictionnaire à un seul niveau (en utilisant des boucles ou LINQ pour la vérification), ce qui n'est pas le cas lorsque nous avons des propriétés et des objets de dictionnaire (qui ont leurs propres propriétés) dans l'objet.