C# type conversion, how to avoid the error?
<p>A co-worker has an object that has a bunch of generic list collections on it. Each type in the list implements a given interface. He wants to be able to create a list that contains all the other lists so he can loop through and call the method the objects implement. Below is a simple example.</p>

<pre><code> List&lt;Dx&gt; dxs = new List&lt;Dx&gt;();
 dxs.Add(new Dx());
 dxs.Add(new Dx());

 List&lt;Proc&gt; procs = new List&lt;Proc&gt;();
 procs.Add(new Proc());

 List&lt;List&lt;IClean&gt;&gt; lists = new List&lt;List&lt;IClean&gt;&gt;();
 lists.Add(procs); // Error here
 lists.Add(dxs); // Error here

 foreach (List&lt;IClean&gt; list in lists)
 {
     foreach (IClean i in list)
     {        
         i.Clean();
     }
 }
</code></pre>

<p>Dx and Proc both implement IClean. This is the goal. Is something like this possible? Or, is this bad programming?</p>

<p>.NET Version 4.0</p>
