class ListWrapper : IList<T>
{
IList list;

public T this[int index]{
get{ return (T)list[index]; }
set{ list[index] = value; }
}
...
}
こんな感じのものを作ってかぶせてやればいいんだけど