J'ai écrit une classe CustomerCollection, qui implémente les interfaces IEnumerable et IEnumerator. Maintenant, je veux que l'objet de classe CustomerCollection puisse être recherché par la fonction Where() et Find() et souhaite également obtenir un objet List de type Customer de la classe CustomerCollection. S'il vous plaît aider. Aussi, est la mise en œuvre des interfaces correctes.IEnumerable collection to List
public class Customer
{
private int _CustomerID;
private string _CustomerName;
public Customer(int customerID)
{
this._CustomerID = customerID;
}
public int CustomerID
{
get
{
return _CustomerID;
}
set
{
_CustomerID = value;
}
}
public string CustomerName
{
get
{
return _CustomerName;
}
set
{
_CustomerName = value;
}
}
}
public class CustomerController
{
public ArrayList PopulateCustomer()
{
ArrayList Temp = new ArrayList();
Customer _Customer1 = new Customer(1);
Customer _Customer2 = new Customer(2);
_Customer1.CustomerName = "Soham Dasgupta";
_Customer2.CustomerName = "Bappa Sarkar";
Temp.Add(_Customer1);
Temp.Add(_Customer2);
return Temp;
}
}
public class CustomerCollection : IEnumerable, IEnumerator
{
ArrayList Customers = null;
IEnumerator CustomerEnum = null;
public CustomerCollection()
{
this.Customers = new CustomerController().PopulateCustomer();
this.CustomerEnum = Customers.GetEnumerator();
}
public void SortByName()
{
this.Reset();
}
public void SortByID()
{
this.Reset();
}
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)this;
}
public void Reset()
{
CustomerEnum.Reset();
}
public bool MoveNext()
{
return CustomerEnum.MoveNext();
}
public object Current
{
get
{
return (Customer)CustomerEnum.Current;
}
}
}
Vos classes de collection ne devraient jamais mettre en œuvre IEnumerable ** et ** IEnumerator (sauf pour les rares cas où il n'y a que jamais aucun élément). Les énumérateurs sont dynamiques et les énumératifs ne le sont pas. Votre code ne fonctionnera pas lorsque GetEnumerator() est appelé plusieurs fois. –
Voulez-vous dire 'IEnumerable'/'Liste ' ou exactement 'IEnumerable' /' List'? –
abatishchev
Pourquoi n'utilisez-vous simplement pas la liste et vous obtenez toutes les fonctions Where et Linq gratuitement ... –
chugh97