问题标签 [static-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
27185 浏览

c# - System.TypeInitializationException:“提示”的类型初始化程序引发异常

我正在尝试访问静态列表的值。但是,当我尝试这样做时,会引发此异常。

System.TypeInitializationException:“提示”的类型初始化程序引发了异常。-- -> System.NullReferenceException:对象引用未设置为对象的实例

带有列表的类。

这是试图访问列表的类。

是什么导致这种情况发生?有没有更好的方法来存储这些提示。我只需要一个提示列表来输出到 Windows 手机页面上的两个文本块。

0 投票
1 回答
2394 浏览

java - 抽象类中的静态构造函数?

考虑以下示例情况:

显然,我不能这样做(new Parent()),因为 Parent 是抽象的,但我真的不想要Parent。我希望这个方法自动提供给子类。

我宁愿使用“静态构造函数”方法,.allocate()而不是添加另一个可见的构造函数。

我有什么方法可以将此默认实现放入Parent类中,还是每个子类都必须包含相同的代码?

我想另一种选择是从父级中剥离“抽象”,但抽象适合——我从不想要父类型的对象。

提前致谢。

0 投票
4 回答
4252 浏览

c# - 设计问题:静态类只初始化一次,破坏单元测试

我有一个静态Configuration类负责我的整个系统的数据设置。它在其构造函数中从注册表加载某些值,并且它的所有方法都基于这些值。如果它无法从注册表中获取值(如果尚未激活应用程序则可能),它会抛出一个异常,转换为 a TypeInitializationException,这对我来说很好。

我使用 NUnit 编写了单元测试,以确保 Configuration 的构造函数正确处理所有情况 - 正常值、空白值、Null 值。每个测试都使用相关值初始化注册表,然后调用 Configuration 中的一些方法。这就是问题所在:NUnit 决定首先运行 Null 测试。它清除注册表,初始化配置,抛出异常 - 一切都很好。但是,因为这是一个静态类,其构造函数刚刚失败 - 它不会为其他测试再次重新构造该类,并且它们都失败了。

即使没有 Null 测试,我也会遇到问题,因为 Configuration 可能(我猜)为所有使用它的类初始化一次。

我的问题是:我应该使用反射来为每个测试重新构建类,还是应该重新设计这个类来检查属性而不是构造函数中的注册表?

0 投票
1 回答
2295 浏览

c# - 如何确保调用静态构造函数而不调用任何成员

我有一个带有静态构造函数的类。

我希望在不调用或使用其任何成员的情况下调用静态构造函数,但前提是尚未调用构造函数。

我尝试使用反射。通过反射,我可以调用静态构造函数(很多次),但我无法确定它之前是否已经被调用过。

我该怎么做呢?

编辑
这不仅是我正在谈论的一门课,还可能更多。可以说,所有标有特殊属性的类。

0 投票
1 回答
2853 浏览

entity-framework - 静态构造函数中的 Database.SetInitializer()?

许多人可能知道为什么我们需要使用下面显示的代码。但是,我想将此逻辑分层,并且我不想在我的 Web 层中引用实体框架 DLL,因此我最终将此代码放在我的DbContext类的静态构造函数中。

这是一个坏主意吗?这样做会影响应用程序的性能吗?

0 投票
2 回答
162 浏览

c# - 全局类中静态构造函数和定义静态实例的区别

静态构造函数有什么区别如下:

并在全局类中定义静态实例如下:

每种类型之间有什么区别?哪个更好用?

0 投票
2 回答
1495 浏览

c# - 静态构造函数不能有返回类型,但静态方法必须有 C# 中的返回类型

这些天我只是在 OOPS 上进行一些头脑风暴,突然想到一个问题。我觉得它很相关,所以我决定问社区。问题是:

静态构造函数不能有返回类型(int、string 等),但静态方法在 C# 中必须有返回类型。

c# 编译器如何区分这两种情况以使其通过编译?

0 投票
1 回答
446 浏览

c# - Eager load and store Singleton

As part of trying to propose an answer to another question, I wanted to create a Dictionary of self-registering Singleton instances. Specifically, something like this:

However, the AdminRole constructor isn't being called unless I access Instance, so it's not being added to the Roles dictionary. I know I could just instantiate the dictionary using { AdminRole.Instance.Name, Admin Role}, but I'd like adding new roles to not require the Role class to change.

Any suggestions? Is this even a good design for accessing Singletons by string?


The line of code to test the result is:

It's successful if you don't get a KeyNotFound exception (or null).

There can be an explicit initialization of Role (such as Role.Initialize()), but not of the subclasses - the idea is to be able to add a subclass so the dictionary has it, without ever needing to change anything pre-existing.

0 投票
2 回答
2302 浏览

asp.net - asp.net:每次回发到页面时都会调用静态构造函数吗?

这可能是Asp.net Static Variable Life time Across Refresh 和 PostBack的重复,但我的查询有点不同。

我有一个网页应用程序,即 default.aspx。我有一个带有静态构造函数和静态属性“MyProperty”的公共静态类“MyClass”,这个类在 default.aspx.cs 类之外。

静态类的属性是在页面加载和按钮单击时分配的。

现在,我知道每当调用或分配类的任何属性时,一个类型的静态构造函数只会被调用一次。这是每AppDomain. 之后,将永远不会调用静态构造函数。

我还知道,应用程序域是一个 .NET 构造,它在进程中加载​​的程序集集之间提供了一层隔离。

所以我的问题是

  1. 有人可以详细说明AppDomainasp.net吗?任何相关链接也将有所帮助。
  2. 我知道页面对象是在每次回发时创建和销毁的。那么,对于下面的代码,会不会每次回发都会调用静态构造函数呢?

我尝试通过在静态构造函数上保留断点来调试代码。第一次加载页面时断点被击中,但当我单击按钮时没有。但我不确定这在 IIS 上托管时是否会以同样的方式工作,所以想获得一些专家意见。浏览器是IE10。

如果我没有正确构筑任何句子或陈述错误,请告诉我。

提前致谢。

问候,

萨马尔

0 投票
1 回答
98 浏览

c# - 静态构造函数什么时候执行,在静态字段之前还是之后?

考虑我有

然后我像这样使用它

但其余代码没有按我预期的那样工作。然后我重写了ClassD,它成功了

这两个代码示例在哪些方面不同?我希望他们有相同的行为,但他们没有。