Вы, конечно, можете возвратить любую реализацию IEnumerable<Part>
в качестве подробности реализации вашего GetParts
метода (например, Train
может легко вернуть List<Part>
).Но сигнатуры метода должны точно совпадать с между определением интерфейса и реализацией класса этого метода.
Здесь (в отличие, например, от перегрузки) сигнатура метода включает в себя тип возврата метода.Так что нет, вы не можете написать Car
как показано или что-то подобное.Вы, конечно, можете иметь метод GetParts
, который возвращает , возвращающий List<Part>
, но который не будет удовлетворять требованию интерфейса - для которого вы можете вместо этого предоставить явную реализацию:
public class Car : IVehicle
{
List<Part> GetParts(int id)
{
//return list of car parts
}
IEnumerable<Part> IVehicle.GetParts(int id) => this.GetParts(id);
}