class TypeA
{
public TypeA Copy() { ... }
public bool IsEqual(TypeA mytypeA) { ... }
public bool IsSame(TypeA mytypeA) { ... }
...
}
class TypeACollection : List<TypeA>
{
public bool IsSame (TypeACollection typeAs)
{
if (Count != typeAs.Count)
return false;
return this[0].IsSame(typeAs[0]);
}
...
}
TypeB,TypeC與TypeA有相似的功能Copy/IsEqual/IsSame。 TypeBollection,TypeCollection有類似的IsSame。 TypeBCollection使用TypeB.IsSame,TypeCCollection使用TypeC.IsSame。通用?抽象類?什麼是最好的設計我的代碼?
現在,我計劃增加2個新的類別:LocData和LocDataCollection
class LocData
{
public virtual TypeA Copy() { ... }
public virtual bool IsEqual(TypeA mytypeA) { ... }
public virtual bool IsSame(TypeA mytypeA) { ... }
...
}
class LocDataCollection<T> : List<LocData> where T: LocData
{
public bool IsSame (LocDataCollection<T> typeAs)
{
if (Count != typeAs.Count)
return false;
return this[0].IsSame(typeAs[0]);
}
...
}
和重寫現有的代碼,
class TypeA : LocData
{
public new TypeA Copy() { ... }
public new bool IsEqual(TypeA mytypeA) { ... }
public new bool IsSame(TypeA mytypeA) { ... }
...
}
class TypeACollection : ???
{
???
// so I can remove IsSame here,
// when I call IsSame, it will use one from LocDataCollection and still call
// TypeA.IsSame
...
}
現在我失去了在抽象/虛擬/通用/ ..這是最好的方法嗎?
'IsEqual'和'IsSame'有什麼區別? – 2012-04-19 15:46:13
你應該繼承'Collection',而不是'List '。 –
SLaks
2012-04-19 15:46:58
IsEqual檢查密鑰是否相等,IsSame檢查內容是否相同 – weslleywang 2012-04-19 17:57:14