Hej.
Hur använder man generics?.
Jag vill fylla 2 object med 1 metod:
List<Customers> Custy=new List<Customer>();
List<Order> Ordersy=new List<Order>();
Fill(Custy);
Fill(Ordersy);
detta var lite pseudokod. Är detta möjligt?.
8 svar · 913 visningar · startad av natas
Hej.
Hur använder man generics?.
Jag vill fylla 2 object med 1 metod:
List<Customers> Custy=new List<Customer>();
List<Order> Ordersy=new List<Order>();
Fill(Custy);
Fill(Ordersy);
detta var lite pseudokod. Är detta möjligt?.
natas skrev:
Är detta möjligt?.
Visst är det det...
Här kommer ett litet förslag
public void Fill<ItemType>(ItemType item){....}
Här tar jag emot ett objekt av någon typ och opererar på det:
För att anropa metoden skriver man:
Fill<Custy>(mycusty);
- M
Kan man enkelt sortera en genericCollection?
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.
- M
En List har ju .Sort som du kan köra en comparasion på tex. använd delegates för snygg kod, typ
myColl.Sort(delegate(minKlass p1,minKlass p2) { return p1.MySortProp.CompareTo(p2.MySortProp); });
Jag kör på en class för GenericCollections
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...
- M
Okej tack Gladh ska kika mer på det.
För er som är intresserade av en sort funktion till generic collections kika på denna länk. Fungerar väldigt smutt.