-3

我的项目中有大约 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 语句中,每个类都会检查其实例是否具有某些值。然后,如果它有一些值,它将调用该类的保存方法。

我希望现在很清楚。

4

1 回答 1

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();
}
于 2013-06-04T14:08:30.973 回答