gpt4 book ai didi

c# - 在 C# 中,我可以知道基类中哪些 child 继承 self 吗?

转载 作者:太空狗 更新时间:2023-10-29 22:05:00 24 4
gpt4 key购买 nike

我有一个基类车辆和一些子类,如汽车、摩托车等。继承自车辆。在每个子类中都有一个函数 Go();现在我想在 Go() 函数触发时记录每辆车的信息,在该日志上我想知道是哪种车辆触发的。

例子:

public class vehicle 
{
public void Go()
{
Log("vehicle X fired");
}
}
public class car : vehicle
{
public void Go() : base()
{
// do something
}
}

我如何在函数 Log 中知道那辆汽车在 base() 期间调用了我?谢谢,

暗利

最佳答案

调用 GetType()来自 Vehicle.Go() 的方法可行——但前提是实际调用了 Go()。

强制执行此操作的一种方法是使用 template method pattern :

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
}
}

关于c# - 在 C# 中,我可以知道基类中哪些 child 继承 self 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/302157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com