Omr*_*mri 5 .net c# inheritance
我有一个基础车和一些儿童班,如汽车,摩托车等.继承车辆.在每个子类中都有一个函数Go(); 现在我想在Go()函数触发时记录每辆车的信息,在那个日志中我想知道哪种车辆做了.
例:
public class vehicle
{
public void Go()
{
Log("vehicle X fired");
}
}
public class car : vehicle
{
public void Go() : base()
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
我如何知道在base()期间汽车给我打电话的功能?谢谢,
奥马里
Jon*_*eet 15
GetType()从Vehicle.Go()调用会起作用 - 但只有在实际调用Go()时才会这样.
强制执行此操作的一种方法是使用模板方法模式:
public abstract class Vehicle
{
public void Go()
{
Log("vehicle {0} fired", GetType().Name);
GoImpl();
}
protected abstract void GoImpl();
}
public class Car : Vehicle
{
protected override void GoImpl()
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)