У меня есть интерфейс с одним параметром универсального типа:Объявление наследственных родовые со сложными ограничениями типа
public interface IDriveable<T> where T : ITransmission { ... }
У меня также есть класс, который имеет параметр типа, который должен быть таким типа интерфейса:
public class VehicleFactory<T> where T : /* ??? */
Здесь есть проблема с этой декларацией. Я не могу поставить «IDriveable», потому что он не имеет параметров типа и не соответствует сигнатуре типа IDriveable. Но я также не хочу ставить IDriveable <U>, потому что тогда VehicleFactory должен знать, что вид IDriveable он получает. Я хочу, чтобы VehicleFactory принимал любой вид IDriveable.
Предлагаемый раствор Коллега имел был использовать:
Но мне не нравится это, так как это излишнее. Я должен сказать тип «U» дважды:
var factory = new VehicleFactory<IDriveable<AllWheelDrive>, AllWheelDrive>();
Что должно быть в вопросительных знаках?
Зачем нужен параметр IDriveable?Не можете ли вы использовать IDriveable внутри класса и получить только параметр AllWheelDrive? –
configurator