Colllection-Klasse casten

11/07/2008 - 07:46 von Kai Bräutigam | Report spam
Hallo NG,

ich habe folgendes Problem: Es existieren zwei Klassen, Customer und
CustomerCollection, welche sich von List<Customer> ableitet. In dieser
Klasse CustomerCollection habe ich eine Methode, die wie folgt ausschaut:

public CustomerCollection FindByName(string name)
{
return this.FindAll(customer => { return customer.Name == name; });
}

Leider funktioniert dies nicht so einfach, denn die FindAll-Methode liefert
ein Objekt vom Typ List<Customer> und nicht CustomerCollection zurück. Nun
meine ganz banale Frage: Wie komme ich am optimalsten zu einem
entsprechenden CustomerCollection Objekt?

Momentan habe ich CustomerCollection noch einen Konstruktor spendiert, der
wie folgt ausschaut:

public CustomerCollection(IEnumerable customerList)
{
this.AddRange(customerList);
}

und die Methode FindByName entsprechend abgewandelt:
return new CustomerCollection(this.FindAll(...));

Leider ist das ganze in Sachen Performance doch etwas nachteilig, so dass
ich gern einen einfach Cast einsetzen würde. Nur geht dieser leider nicht
in die entsprechende Richtung...

Irgendwelche Ideen?

Danke,
Kai
 

Lesen sie die antworten

#1 Kai Bräutigam
11/07/2008 - 10:17 | Warnen spam
So gehts:

public class CustomerList : List<Customer>
{
public CustomerList() { }
public CustomerList(IEnumerable<Customer> customerList) :
base(customerList) { }

public CustomerList FindByName(string name)
{
return new CustomerList(this.FindAll(customer => { return customer.Name
== name; }));
}
}

Grüße,
Kai

Ähnliche fragen