private static bool AreEqual(object left, object right)
{
if (left == null || right == null) return false;
if (left is string && right is String)
{
return String.Compare(left.ToString(), right.ToString()) == 0;
}
if (left.GetType() == right.GetType())
{
return right.Equals(left);
}
IConvertible convertible = left as IConvertible;
if (convertible != null)
{
try
{
object newleft = convertible.ToType(right.GetType(), null);
return (newleft.Equals(right));
}
catch(Exception)
{
// Do nothing
}
}
return left.ToString().Equals(right.ToString());
}