Поскольку DynamicBindingListBase<T>
реализует IEnumerable<T>
, а GmxGlobalList
наследует от DynamicBindingListBase<GmxGlobal>
и реализует IEnumerable<IGmxGlobal>
.
GmxGlobalList
реализует как IEnumerable<GmxGlobal>
, так и IEnumerable<IGmxGlobal>
.
Я собираюсь предположить, что DynamicBindingListBase<T>
уже имеет конкретную реализацию IEnumerable<T>
. Эта реализация не будет работать как IEnumerable<IGmxGlobal>
, поскольку IEnumerable<IGmxGlobal>
имеет более широкий охват, чем IEnumerable<GmxGlobal>
.
Если бы у вас было просто следующее:
GmxGlobalList : DynamicBindingListBase<GmxGlobal>
Поскольку IEnumerable
является ко-вариантом, вы уже можете использовать GmxGlobalList
как IEnumerable<IGmxGlobal>
. Как это:
IEnumerable<IGmxGlobal> foo = new GmxGlobalList();
Если вам действительно нужно реализовать IEnumerable<IGmxGlobal>
, вы можете написать детали реализации, чтобы обернуть вокруг DynamicBindingListBase<GmxGlobal>
.
public IEnumerator<IGmxGlobal> GetEnumerator()
{
return (base as IEnumerator<GmxGlobal>).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}