public bool IsEqual(IClone other)
{
//1. make sure that the 'other' object is pointing to a valid object
if (null == other)
throw new COMException("Invalid objact.");
//2. verify the type of 'other'
if (!(other is ClonableObjClass))
throw new COMException("Bad object type.");
ClonableObjClass otherClonable = (ClonableObjClass)other;
//test that all ot the object's properties are the same.
//please note the usage of IsEqual when using arcobjects components that
//supports cloning
if (otherClonable.Version == m_version &&
otherClonable.Name == m_name &&
otherClonable.ID == m_ID &&
otherClonable.ManagedArray == m_arr &&
((IClone)otherClonable.SpatialReference).IsEqual((IClone)m_spatialRef) &&
((IClone)otherClonable.Point).IsEqual((IClone)m_point))
return true;
return false;
}