c# - 子级完全初始化后如何执行基类中的方法?

标签 c# .net constructor abstract-class

我实现了以下结构:

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/

相关文章:

c# - 引发领域事件时,谁负责实体的突变? DDD

c# - 如何使用 Selenium Webdriver (C#) 在 Chrome 中处理浏览器身份验证?

c# - 嵌套或不嵌套的 if block ?

c++ - 具有专门构造函数的模板类

android - 如何使用Kotlin创建自定义 View 的构造函数

c# - TFS 单元测试在开发机器上通过但在构建机器上失败

c# - 什么 C# 库提供无损视频压缩?

.net - 如何在有效期开始前使用服务器证书

.net InstallUtil 实用程序 - 32 位与 64 位

java - 父类(super class)什么时候没有默认构造函数?