Как говорит Андрей, вы хотите (универсальный) ковариация .Однако:
- Общая дисперсия поддерживается только в C # 4
- Общая дисперсия не поддерживается в классах
- В реальной ситуации это может быть небезопасно.
Чтобы перейти к финальной точке, предположим, что DalBase<T>
имеет такой метод:
void AddEntity(T entity)
Теперь у вас есть что-то подобное, которое вы хотите иметь возможность компилировать -но, очевидно, это было бы опасно:
DalBase<Fruit> fruitDal = new DalBase<Banana>();
fruitDal.AddEntity(new Apple());
Вторая строка должна была бы скомпилироваться - поэтому для того, чтобы это не удалось во время компиляции, должно иметь , чтобы быть первой строкой, которая потерпит неудачу.1022 *
Недавно я провел часовую беседу об общей дисперсии, которая может оказаться полезной, если вы хотите узнать больше - см. Страницу видео NDC 2010 и выполните поиск по слову «дисперсия».В качестве альтернативы вы можете прочитать сообщения Эрика Липперта в блоге на тему - но имейте в виду, что это, вероятно, займет больше часа;)