Tôi đang cố gắng sử dụng Danh sách tùy chỉnh là tôi đã thêm một vài công cụ bổ sung. Tôi muốn áp dụng danh sách này vào một danh sách dài các lớp tùy chỉnh mà tôi đã tạo. Tất cả các lớp đều có số ID và một số công cụ trong Danh sách sử dụng ID.Tạo và sử dụng Danh sách tùy chỉnh <T> trong C#
Đây là một phần mã của tôi mà tôi đang cố gắng sử dụng. Tôi hy vọng điều này giúp bạn hiểu được vấn đề của tôi.
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>();
}
}
Vì danh sách tùy chỉnh của bạn chỉ giao dịch với Phòng tại sao bạn không tạo phòng: Danh sách thay thế? –
ysrb
Bạn nên sử dụng các ràng buộc trên 'T', vì vậy bạn hãy đảm bảo chỉ cho phép các lớp có trường' ''' hoặc thuộc tính. Tạo một Giao diện để thực thi điều này, nếu bạn không thể kế thừa. Nhưng bạn thực sự muốn biết điều gì? –