一位同事有一个对象,其中包含许多通用列表集合。列表中的每个类型都实现了给定的接口。他希望能够创建一个包含所有其他列表的列表,以便可以循环遍历并调用对象实现的方法。下面是一个简单的示例。
List<Dx> dxs = new List<Dx>();
dxs.Add(new Dx());
dxs.Add(new Dx());
List<Proc> procs = new List<Proc>();
procs.Add(new Proc());
List<List<IClean>> lists = new List<List<IClean>>();
lists.Add(procs); // Error here
lists.Add(dxs); // Error here
foreach (List<IClean> list in lists)
{
foreach (IClean i in list)
{
i.Clean();
}
}
Dx和Proc都实现了IClean接口,这是目标。类似这样的操作是否可行?或者说,这是不好的编程方式吗?
.NET版本为4.0。