Вот пример архитектуры подхода я Избраный, как сейчас:Каков лучший способ сравнить коллекцию с другим (архитектурно-говорящим)?
public abstract class CollectionComparer {
public virtual SetEqual(IEnumerable enum1, IEnumerable enum2) {
if(enum1== null && enum2== null)
return true;
if(enum1== null && !(enum2== null))
return false;
if(!(enum1== null) && enum2== null)
return false;
if(enum1.GetType().DeclaringType != enum2.GetType().DeclaringType)
return false;
var col1 = (from e in enum1 select e).ToList()
var col2 = (from e in enum2 select e).ToList()
if(col1.Count != col2.Count)
return false;
foreach (element in col1)
if(!col2.Contains(element))
return false;
foreach (element in col2)
if(!col1.Contains(element))
return false;
return true;
}
}
public interface IProduct {
...
}
public interface IOrder {
...
ICustomer Customer { get; }
ICollection<IProduct> Products { get; }
}
public interface ICustomer {
...
ICollection<IOrder> Orders { get; }
}
public internal Order : CollectionComparer, IOrder {
#region IOrder interface implementation
...
#endregion
}
public internal Customer : CollectionComparer, ICustomer {
#region ICustomer interface implementation
...
#endregion
}
ли это CollectionComparer абстрактного класс подход считается хорошей практикой для сравнения сбора за эквивалент Object.equals(), примененного к коллекции?
Спасибо и Daniel A. White и «No Returns No Refunds» за эти очень отличные ответы! К сожалению, я могу задать только один ответ в качестве ответа. Учитывая мою первую цель - определить, имеет ли сборник сравнительный коэффициент равенства, ответ Даниэля А. Уайта является лучшим. Извините, нет возвратов Нет возврата! –