遍历项目中的所有类

本文关键字:项目 遍历 | 更新日期: 2023-09-27 18:16:56

我的项目中有大约50个类。每个类都有一些保存功能。现在我想将数据保存在一些所需的流程中。

EG: I have classes A, B, C, D, E.
And the sequence of save might be : C, D, E, B, A

现在,因为我有很多类,所以我想创建一个for循环来保存流中的数据。要做到这一点,我想创建一个类的列表,然后我可以这样做:

List<Classes> list_class = new List[] {C, D, E, B, A};
foreach (Classes item in list_class)
{
    item.Save();
}

有可能有这种功能吗?如果是,那怎么做?

编辑:

Below you can see what i want to achieve:
List<?> Saving_Behaviour = new list[];
for (int i = 0; i < Saving_Behaviour.Length; i++)
{
   if (((Saving_Behaviour[i])Controller.GetBindingList()).HasValue())
   {
         (Saving_Behaviour[i]).Save();
    //do save
   }
}

总结:在if语句中,每个类检查其实例是否有值。然后,如果它有一些值,它将调用该类的save方法。

我希望现在讲清楚了。

遍历项目中的所有类

这正是接口的作用——在对象中有通用的功能,并且在编译时保证该成员是实现的。只要你的每个对象实现一个公共接口,你可以很容易地为你的对象创建一个容器,例如

// Ensure your objects implement a common interface.
Dogs : ISaveable
Cats : ISaveable
...
// The interface (not shown) has a SaveOrder
Dogs.SaveOrder = 1;
Cats.SaveOrder = 2;
...
// Create a container that is capable of holding items implementing ISaveable 
List<ISaveable> saveItems = new List<ISaveable>();
...
// Add your items to your container
saveItems.Add(Dogs);
saveItems.Add(Cats);
...
// When it's time to save, simply enumerate through your container
foreach(var item in saveItems.OrderBy(q=>q.SaveOrder))
{
   // The interface guarantees that a Save method exists on each object
   item.Save();
}