using System.Collections.Generic;
public class ObjectComparer
public static Dictionary<string, object> SerializeObjectToDictionary(object obj)
var json = JsonConvert.SerializeObject(obj);
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
public static bool CompareDictionaries(Dictionary<string, object> dict1, Dictionary<string, object> dict2)
if (dict1.Count != dict2.Count)
foreach (var key in dict1.Keys)
if (!dict2.ContainsKey(key))
if (!object.Equals(value1, value2))
public static bool AreObjectsEqual(object obj1, object obj2)
var dict1 = SerializeObjectToDictionary(obj1);
var dict2 = SerializeObjectToDictionary(obj2);
return CompareDictionaries(dict1, dict2);
public string Name { get; set; }
public int Age { get; set; }
var person1 = new Person { Name = "John", Age = 30 };
var person2 = new Person { Name = "John", Age = 30 };
bool areEqual = ObjectComparer.AreObjectsEqual(person1, person2);
Console.WriteLine("Objects are equal: " + areEqual);