It seems that a List object cannot be stored in a List variable in C#, and can\'t even be explicitly cast that way.
List sl = new List
Here is another pre-.NET 3.5 solution for any IList whose contents can be cast implicitly.
public IList ConvertIList(IList list) where D : B { List newList = new List(); foreach (D item in list) { newList.Add(item); } return newList; }
(Based on Zooba's example)