Мне нужно написать класс под названием Vehicle
со многими атрибутами (например, размер, места, цвет, ...), а также у меня есть еще два класса для написания: Trunk
и Car
со своими атрибутами.Интерфейс с абстрактным классом
Так что я написал:
// Vehicle.cs
abstract public class Vehicle
{
public string Key { get; set; }
...
}
// Car.cs
public class Car : Vehicle
{
...
}
// Trunk.cs
public class Trunk : Vehicle
{
...
}
После этого я написал интерфейс:
// IVehicleRepository.cs
public interface IVehicleRepository
{
void Add(Vehicle item);
IEnumerable<Vehicle> GetAll();
Vehicle Find(string key);
Vehicle Remove(string key);
void Update(Vehicle item);
}
Так я думал, что я мог бы использовать что-то вроде этого:
// CarRepository.cs
public class CarRepository : IVehicleRepository
{
private static ConcurrentDictionary<string, Car> _cars =
new ConcurrentDictionary<string, Car>();
public CarRepository()
{
Add(new Car { seats = 5 });
}
public IEnumerable<Car> GetAll()
{
return _cars.Values;
}
// ... I implemented the other methods here
}
Но у меня были ошибки:
ошибка CS0738: «CarRepository» не реализует элемент интерфейса «IVehicleRepository.GetAll()». 'CarRepository.GetAll()' не может реализовать 'IVehicleRepository.GetAll()', потому что у него нет соответствующего типа возврата 'IEnumerable <' Vehicle> '.
Итак, как я могу это сделать?
Спасибо, ребята (http://stackoverflow.com/users/6400526/gilad-green и http://stackoverflow.com/users/5528593/ren%C3%A9-vogt). Это помогло мне, но у меня другая проблема. Если у меня есть только один репозиторий, я могу ввести его в «public void ConfigureServices (службы IServiceCollection)» на Startup.cs: services.AddSingleton(); Но теперь у меня есть два репозитория: CarRepository и TrunkRepository (расширение IVehicleRepository). Как я могу сейчас вводить CarRepository и TrunkRepository? –
shibata
@ Олаво Шибате - рад, что это помогло. Если это помогло вам решить конкретную проблему, пожалуйста, подумайте о том, чтобы разметка была решена. Что касается другого вопроса - политика заключается в том, что последующие вопросы должны быть опубликованы в отдельном вопросе. Пожалуйста, найдите похожие проблемы, которые у вас есть, и вам нужна помощь, пожалуйста, напишите новый вопрос, и мы будем рады помочь. –
Конечно, спасибо. – shibata