一位同事有一个对象,上面有一堆通用列表集合。列表中的每种类型都实现了一个给定的接口。他希望能够创建一个包含所有其他列表的列表,这样他就可以循环并调用对象实现的方法。下面是一个简单的例子。
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 版