我必須編寫一個叫做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)。這幫助了我,但我又遇到了另一個問題。 如果我只有一個存儲庫,我可以在Startup.cs中的「public void ConfigureServices(IServiceCollection services)」中注入它: services.AddSingleton(); 但是,現在我有兩個存儲庫:CarRepository和TrunkRepository(擴展IVehicleRepository)。我現在怎麼注入CarRepository和TrunkRepository? –
shibata
@Olavo Shibate - 很高興幫助。如果它幫助您解決具體問題,請考慮標記爲已解決。至於另一個問題 - 政策是後續問題應該在單獨的問題中發佈。請搜索人們遇到的類似問題,您仍然需要幫助,請發佈一個新問題,我們將很樂意幫助 –
當然,謝謝。 – shibata