始终调用静态构造函数

Always call static constructor

有没有办法始终调用静态 class 的构造函数?经过搜索,我发现它只调用了一次。

我有一个包含很多方法的 class,我的有 20 个方法,但让我们想象一下 class 有 500 个方法。 这 500 个方法都调用了 Web 服务。 现在,在调用网络服务之前,我必须对证书进行安全检查(由于服务器发生变化):

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
CredentialCache cache = new CredentialCache();

所以我必须在每次调用之前编写该代码。 所有的方法都是静态的,class,所以我的选择是:

有没有办法一直调用静态构造函数?我看过一些关于方面的东西,但不太确定如何使用它们。

static 构造函数只能 运行 一次。你不会改变它。

正如您所说,最好的解决方案是创建 class 的实例,然后将需要 运行 的代码再次放入构造函数中。在我看来,证书检查需要进行一次,因为证书不会在几秒钟内更改。

没有

一个static constructor只能调用一次,仅用于初始化,不用于逻辑(如身份验证)

使用 class 的 Singleton 实例,而不是实例化或静态 class 实例。

您获得了实例化 class 的强大功能,但可以像静态 class 一样使用它,这意味着您的重复代码问题已解决,您可以像静态 class 一样使用它因为您的单个实例可作为静态 属性.

Implementing Singleton in C#

y如果您想执行安全检查,我建议使用 Singleton 模式。您可以在私有构造函数中进行安全检查,但是请注意,这将是非常错误的

只会对第一次调用进行安全检查,然后驻留在内存中,其他调用不一定会进行安全检查。