Sto tentando di utilizzare un elenco personalizzato in cui sono stati aggiunti alcuni strumenti aggiuntivi. Voglio applicare questo elenco a un lungo elenco di classi personalizzate che ho creato. Tutte le classi hanno un numero identificativo e alcuni strumenti nella lista usano l'ID.Creazione e utilizzo di un elenco personalizzato <T> in C#
Ecco una parte del mio codice che sto cercando di utilizzare. Spero che questo ti aiuti a capire il mio problema.
namespace Simple_Point_of _Sales_System
{
public class MyList<T> : List<T>
{
internal int SetID()
{
return this.Max(n => n.ID) + 1;
}
internal T Find(int ID)
{
return this.Find(n => n.ID == ID);
}
internal T Add(T n)
{
Read();
Add(n);
Write();
return n;
}
internal void Remove(int ID)
{
Read();
if (this.Exists(t => t.ID == ID)) RemoveAll(t => t.ID == ID);
else MessageBox.Show(GetType().Name + " " + ID + " does not exist.", "Missing Item", MessageBoxButtons.OK, MessageBoxIcon.Error);
Write();
}
internal void Edit(int ID, T n)
{
Read();
if (this.Exists(t => t.ID == ID)) this[FindIndex(t => t.ID == ID)] = n;
else MessageBox.Show(GetType().Name + " " + ID + " does not exist.", "Missing Item", MessageBoxButtons.OK, MessageBoxIcon.Error);
Write();
}
internal MyList<T> Read()
{
Clear();
StreamReader sr = new StreamReader(@"../../Files/" + GetType().Name + ".txt");
while (!sr.EndOfStream)
Add(new T().Set(sr.ReadLine()));
sr.Close();
return this;
}
internal void Write()
{
StreamWriter sw = new StreamWriter(@"../../Files/" + GetType().Name + ".txt");
foreach (T n in this)
sw.WriteLine(n.ToString());
sw.Close();
}
}
public class Customer
{
public int ID;
public string FirstName;
public string LastName;
}
public class Item
{
public int ID { get; set; }
public string Category { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
public class MyClass
{
MyList<Customer> Customers = new MyList<Customer>();
MyList<Item> Items = new MyList<Item>();
}
}
Poiché la tua lista personalizzata ha a che fare solo con Room perché non crei Rooms: List? –
ysrb
Dovresti usare i vincoli su 'T', quindi assicurati solo di consentire classi che hanno un campo o una proprietà' ID'. Fai creare un'interfaccia per far rispettare questo, se non puoi ereditare. Ma cosa vuoi veramente sapere? –