我实现了以下结构:
public abstract class A
{
protected A()
{
Test();
}
private void Test()
{
Console.WriteLine("2");
}
}
public class B : A
{
public B() : base()
{
Console.WriteLine("1");
}
}
当我创建类 B
的实例时,方法 Test()
在类 B
中的构造函数调用之前执行。就我而言,此方法应该在子级完全初始化后运行。使其工作的一种可能方法是使 Test()
可从 B
访问并在其构造函数末尾调用它。这可行,但如果有人创建 A
的另一个子类,他有可能忘记调用该方法。我的问题是基类中是否有更通用的解决方案来确保在子级完全初始化后执行该方法。
最佳答案
答案是否定的。
.NET 或 C# 中没有内置任何内容可以确保在所有后代构造函数执行之后调用方法。
另一种方法是某种形式的工厂模式,您的类基本上只会为您提供另一个已正确设置的实例,并调用所有必需的方法。
关于c# - 子级完全初始化后如何执行基类中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647021/