迭代项目中的所有类

时间:2013-06-04 14:02:56

标签: c# .net

我的项目中有大约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方法。

我希望现在很清楚。

1 个答案:

答案 0 :(得分:8)

这正是接口的用途 - 您在对象中具有通用功能,并且在编译时保证该成员已实现。只要每个 对象实现一个公共接口,就可以轻松地为对象创建容器,例如

// 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();
}