Я не уверен, что ваши генерики делают здесь то, что вы хотите.
Если вместо
IVehicle<T> Repository {get; set;}
Вы сделали
T Repository {get; set;}
Вы могли бы сделать1009 *
public abstract class BaseController<T> where T : IVehicle
Чтобы убедиться, что они имеют интерфейс IVehicle
Тогда у вас будет типизированный репозиторий и вы получите доступ к вашему методу спойлера.IVehicle<Bus>
но, по крайней мере, в примере кода T никогда не используется в интерфейсе.На данный момент T ничего не стоит.