コンパイル時に T がわからない場合は、次のことができると思います。
var type = typeof(int);
IList<object> myList = (new object[]{1, 2, 3, 4, 5}).ToList();
var mi = typeof(Enumerable).GetMethod("Cast");
var mRef = mi.MakeGenericMethod(type);
object myIEnumerableOfInt = mRef.Invoke(null, new object[]{myList});
mi = typeof(Enumerable).GetMethod("ToList");
mRef = mi.MakeGenericMethod(type);
IList myIListOfInt = (IList)mRef.Invoke(null, new object[]{myIEnumerableOfInt});
...しかし、ここでこのリフレクションを使用すると、それを参照できなくなるIList<int>
ため、コードで推測できるmyIListOfInt
のはIList
... IMOここでのキャストはまったく役に立たないことです。