Tag: 静态构造函数

在调用程序集中的任何方法之前,CLR调用的最早入口点是什么?

在过去的几年里,我偶尔会想知道.NET世界中有哪些(in)着名的DLL_PROCESS_ATTACH可用。 我所说的任何文档,略微简化,类的最早入口点是静态构造函数(cctor),但是你不能影响它何时被调用 ,也不能定义一个保证在任何其他cctor之前被调用的cctor。或字段初始化程序,黑客,如果从未使用过类,它甚至可能根本不会被调用。 因此,如果您想要在调用程序集的任何方法之前保证已初始化某些内容,并且您不希望为程序集中的每个类添加一个cctor,您可以采取什么方法? 或者,这些年来我是否有一个简单易用的托管解决方案?

键入initializer(静态构造函数)exception处理

我正在用C#编写WCF服务。 最初我的实现有一个静态构造函数来进行一次性初始化,但正在进行的一些初始化可能(暂时)失败。 看来静态构造函数只调用一次,即使第一次(失败)尝试引发了exception? 任何后续尝试实例化我的类将立即失败, TypeInitializationException没有实际执行代码的TypeInitializationException 。 C#语言规范声明静态构造函数最多被调用一次,但基本上这会产生一个exception,即使你抓住它也无法从中恢复? 我在这里错过了什么吗? 我想我应该向服务的实例构造函数移动任何远程危险的东西,并手动检查类初始化是否已经成功完成了之前?

将静态参数传递给类

据我所知,你无法将参数传递给C#中的静态构造函数。 但是,在创建类的实例之前,我确实需要传递2个参数并将它们分配给静态字段。 我该怎么办?