Используя описанный вами класс, у меня сработал следующий код:
static void Main(string[] args)
{
MyList<object> foo = new MyList<object>();
MyMethod(foo);
}
static void MyMethod(List<object> things)
{
// No InvalidCastException when called...
}
Единственное, что я изменил из класса MyList<T>
, который вы опубликовали в своем вопросе, - это добавление следующей реализации IEnumerable<T>
:
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return _lstInternal.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _lstInternal.GetEnumerator();
}
Не совсем уверен, почему вы получаете исключение, за исключением того, что я упомянул в своем комментарии, я использую C # версию 4.0. Какую версию вы используете?