大佬教程收集整理的这篇文章主要介绍了丰富不同孩子的Base Class,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前在继承基类时遇到问题。 我有不同的子类,它们使用相同的方法来填充基类的所有信息,并有自己的方法来丰富它。 有没有好的解决方案/模式?我目前的解决方案是 autoMapper。
public class Car
{
public IList<Wheels> wheels { get; set; }
public IList<windows> Whindows { get; set; }
public ENGIne ENGIne { get; set; }
}
public class BMW : Car
{
public Navy Navy { get; set; }
}
public class Tesla : Car
{
public Battery Battery { get; set; }
}
public class CarFactory
{
public BMW CreateBMW()
{
var BMW = (BMW)CreateCar();
BMW.Navy = navy;
RemoveTurnSignal();
}
public Tesla CreateTesla()
{
var tesla = (Tesla)CreateCar();
tesla.battery = battery;
}
private Car CreateCar()
{
var car = new Car();
car.Wheels = wheels;
car.windows = windows;
}
}
使 CreateCar
通用:
public class CarFactory
{
public BMW CreateBMW()
{
var BMW = Create<BMW>();
BMW.Navy = navy;
RemoveTurnSignal();
return BMW;
}
public Tesla CreateTesla()
{
var tesla = Create<Tesla>();
tesla.battery = battery;
return tesla;
}
private TCar Create<TCar>() where TCar : Car,new()
{
var car = new TCar();
car.Wheels = wheels;
car.Windows = windows;
return car;
}
}
确保将TCar
约束为Car
,以便您可以分配给Wheels
和Windows
,并约束为new()
以便您可以调用无参数构造函数。
或者,向 Car
添加一个构造函数:
public class Car
{
public IList<Wheels> Wheels { get; set; }
public IList<Windows> Windows { get; set; }
public ENGIne ENGIne { get; set; }
public Car(IList<Wheels> wheels,IList<Windows> windows)
{
Wheels = wheels;
Windows = windows;
}
}
然后让您的子类调用该构造函数:
public class BMW : Car
{
public Navy Navy { get; set; }
public BMW(IList<Wheels> wheels,IList<Windows> windows) : base(wheels,windows) { }
}
这将允许您创建这样的子类:
public BMW CreateBMW()
{
var BMW = new BMW(wheels,windows);
BMW.Navy = navy;
RemoveTurnSignal();
return BMW;
}
以上是大佬教程为你收集整理的丰富不同孩子的Base Class全部内容,希望文章能够帮你解决丰富不同孩子的Base Class所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。