В инфраструктуре .net есть универсальный интерфейс IEnumerable<T>
, который наследуется от неуниверсального IEnumerable
, и у них обоих есть метод GetEnumerator()
. Единственная разница между этими двумя GetEnumerator()
- это тип возвращаемого значения.
Теперь у меня похожий дизайн, но когда я компилирую код, компилятор сказал:
MyInterface<T>.GetItem()
'скрывает унаследованный член' MyInterface.GetItem()
'. Используйте новое ключевое слово, если было скрыто.
MyInterface<T>.GetItem()
возвращает конкретный тип T, а MyInterface.GetItem()
возвращает тип System.Object.
Так что я думаю, что если ребята из команды BCL скомпилируют каркас .net, они получат то же предупреждение.
Я думаю, что иметь предупреждения компилятора нехорошо, как вы думаете? И как я могу решить эту проблему? Я имею в виду, что хочу получить конкретный тип T при вызове MyInterface<T>.GetItem()
, а не просто экземпляра типа System.Object.
Заранее спасибо! : -)
Дополнение:
Я говорю сами интерфейсы: IMyInterface наследуется от IMyInterface, и у них обоих есть метод GetItem () (IMyInterface.GetItem () возвращает тип T, а IMyInterface.GetItem () возвращает тип System.Object ). Проблема в том, что, если наш код имеет только эти два интерфейса , то есть, нет производных конкретных классов, мы встретим предупреждение компилятора после компиляции исходного кода.