bool IEqualityComparer.Equals(Object x, Object y)
{
if (x.GetHashCode() == y.GetHashCode())
{
WeakReference wX = x as WeakReference;
WeakReference wY = y as WeakReference;
if (wX != null)
{
if (!wX.IsAlive)
{
return false;
}
x = wX.Target;
}
if (wY != null)
{
if (!wY.IsAlive)
{
return false;
}
y = wY.Target;
}
return object.ReferenceEquals(x, y);
}
return false;
}