Det är inga problem, för det är inte själv collection/listan som sköter sorteringen utan objekten själv, tror att de skall implementare ICompareble eller ICompare så kommer collection/list använda sig av den metoden när du vill sortera en lista med ditt objekt.
public class GenericCollection<GENERICTYPE> : CollectionBase
{
public void Add(GENERICTYPE GenericObject)
{
InnerList.Add(GenericObject);
}
public void Add(GenericCollection<GENERICTYPE> GenericColl)
{
foreach (GENERICTYPE GenericObject in GenericColl)
InnerList.Add(GenericObject);
}
public void Remove(int index)
{
InnerList.RemoveAt(index);
}
public bool Contains(GENERICTYPE GenericObject)
{
return InnerList.Contains(GenericObject);
}
public GENERICTYPE this[int indexer]
{
get
{
//Check if the indexer falls in allowable range.
if ((indexer >= 0) &&
(indexer < InnerList.Count))
return (GENERICTYPE)InnerList[indexer];
else
throw new System.IndexOutOfRangeException("Index must be between 0 and " + InnerList.Count.ToString() + ".");
}
}
}
Då lägger du till en metod i din klass som heter sort.
I denna method så får du själv hantera sorteringen av dina objekt. om du ser till så att alla dina objekt implementerar ICompare (eller vad interfacet nu heter) så kan du använda det för att sorterar dina objekt.
Mitt tips till dig är istället lägga det i en List<> och erka's kod, och sedan returnerar denna lista antingne som en lista eller omgjord till en collectionbase.
Själv har jag gjort något liknande men jag utgick ifrån List<> istället för collectionbase, då jag tycker den har mer basfunktionallitet som man bara kan använda rakt av...