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]);
}
...
}
ТипB, TypeC имеют аналогичные функции Copy/IsEqual/IsSame как TypeA. ТипBCollection, TypeACollection имеют аналогичный 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'? –
Вы должны наследовать 'Collection', а не 'List '. –
SLaks
IsEqual проверить, если ключ равен, IsSame проверить, если содержимое такое же – weslleywang