public int Compare(object lhs, object rhs)
{
if (null == lhs)
{
if (null == rhs)
{
return 0;
}
return -1;
}
else
{
if (null == rhs)
{
return 1;
}
IComparable lhsComparable = lhs as IComparable;
if (null == lhsComparable)
{
IComparable rhsComparable = rhs as IComparable;
if (null == rhsComparable)
{
IEnumerable lhsEnumerable = lhs as IEnumerable;
IEnumerable rhsEnumerable = rhs as IEnumerable;
if (null != lhsEnumerable && null != rhsEnumerable)
{
return CompareEnumerables(lhsEnumerable, rhsEnumerable);
}
//throw new ArgumentException(ResourceManager.GetString("CantCompareItems"));
return lhs.Equals(rhs) ? 0 : 1;
}
return -1*(rhsComparable.CompareTo(lhs));
}
return lhsComparable.CompareTo(rhs);
}
}