這裏的架構方法我收藏爲現在的一個例子:將集合與另一個集合(架構地說)進行比較的更好方法是什麼?
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和「沒有退貨,不退款」這些非常優秀的答案!不幸的是,我只能設置一個答案作爲答案。考慮到我確定收藏是否有平等比較的第一個目標,Daniel A. White的答案是最好的。對不起,退貨不退款! – 2010-02-15 20:05:03