【发布时间】:2019-01-09 18:27:22
【问题描述】:
我正在做一个需要用接口替换具体类的项目。下面是具体类及其继承类
public class CarRepository
{
private string _model;
private string _colour;
public CarRepository(string model, string colour) {
_model = model;
_colour = colour
}
public string Get(GUID id)
{
return id.ToString();
}
protected virtual void DoSomething(ref ISpecial special) {
special = special.AddFields(Rego, ModelNumber)
}
}
public class BigCarRepository : CarRepository
{
public class BigCarRepository(string model, string colour)
: base(model, colour)
protected override void DoSomething(ref ISpecial special) {
special = special.AddFields(SpecialOffer, OptionPack)
}
}
我想用接口(即ICarRepository)替换从CarRepository 继承的BigCarRepository 的具体类。因此,我创建了一个接口并替换了具体类,但找不到解决覆盖方法的方法。我已经创建了下面的接口并修改了我的具体类和继承,但停留在 override 方法。
public interface ICarRepository
{
string Get(string id);
}
public class CarRepository : ICarRepository
{
private string _model;
private string _colour;
public CarRepository(string model, string colour) {
_model = model;
_colour = colour
}
public string Get(GUID id)
{
return id.ToString();
}
protected virtual void DoSomething(ref ISpecial special) {
special = special.AddFields(Rego, ModelNumber)
}
}
public class BigCarRepository : ICarRepository
{
public ICarRepository _carRepository { get; set; }
public BigCarRepository(ICarRepository carRepository)
{
_carRepository = carRepository;
}
public string Get (string id)
{
return _carRepository.Get(id);
}
**protected override void DoSomething(ref ISpecial special) {
special = special.AddFields(SpecialOffer, OptionPack)
}**
}
【问题讨论】:
-
如果你想在
CarRepository中调用成员,那么你必须从CarRepository继承BigCarRepository并强制其接口
标签: c# inheritance interface overriding base