Я знаю, что это старо, но я все еще не очень хорошо разбираюсь в этих проблемах. Может ли кто-нибудь сказать мне, почему следующее не работает (выбрасывает исключение runtime
о кастинге)?
public abstract class EntityBase { }
public class MyEntity : EntityBase { }
public abstract class RepositoryBase<T> where T : EntityBase { }
public class MyEntityRepository : RepositoryBase<MyEntity> { }
И теперь линия литья:
MyEntityRepository myEntityRepo = GetMyEntityRepo(); // whatever
RepositoryBase<EntityBase> baseRepo = (RepositoryBase<EntityBase>)myEntityRepo;
Итак, может ли кто-нибудь объяснить, как это недопустимо? И, я не в настроении объяснить - есть ли строка кода, которую я могу использовать, чтобы на самом деле сделать это?