问题标签 [static-classes]

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 投票
1 回答
8516 浏览

actionscript-3 - AS3:静态类与单例

我知道朋友们不喜欢“对抗”问题,但是……即使改写一下标题,对抗部分仍然存在,所以,为什么要隐藏它。

基本上,我想知道何时以及为什么应该使用单例或静态类,什么可以提供静态类无法提供的单例,反之亦然。

很长一段时间我都使用了这两种方法,但我看不出为什么我不应该使用另一种。

谢谢。

0 投票
0 回答
69 浏览

php - 在 CakePHP 应用程序中使用静态类

可能重复:
在类构造函数中实例化供应商类

我有一个名为fancyVendor的第 3 方供应商类,我将其加载到我的控制器中:

但我需要从其他控制器访问这个供应商类。看来我需要将其用作静态类。如何静态使用供应商类?

0 投票
4 回答
4374 浏览

java - 在构造函数中初始化公共静态最终变量

我正在尝试Version为我的应用程序创建一个类,该类将在加载时从清单中读取版本号,然后仅Version.MAJOR在其他地方需要它时引用例如等。但是,我在这样做时遇到了问题。这是我当前的代码:

它不会编译,因为static final变量可能没有被初始化(例如,如果加载了错误的清单或加载它时出现异常),我无法弄清楚执行此操作的正确过程是什么。

阅读这个问题给了我一些不使用的见解public static final。我应该使用public staticgetter 方法吗?

0 投票
0 回答
174 浏览

wpf - 将列表框的 SelectedItem 绑定到静态类的实例中的属性

我在模板文件中有一个简单的列表框,如下所示:

然后在我的 ProcessVisualization 类中,我有以下内容:

当我运行将字符串列表分配给 TestListItems 的方法时,它们会正确显示在我的列表框中,并且我可以毫无问题地从代码中设置 SelectedTestListItem。但是,如果用户尝试从列表框中进行选择,它似乎不会重新更新我在 ProcessVisualization 类上的属性。有谁知道我做错了什么?

0 投票
1 回答
589 浏览

.net - 将静态嵌套类的字符串属性序列化为 JSON

给定一组静态嵌套类,例如:

我想构建一个等效的 JSON 字符串,例如:

每个嵌套类都会在 JSON 中生成一个嵌套对象。每个字符串属性都会在 JSON 中生成一个字符串键/值对。

我知道我可以反映根静态类并很容易地构建一个 JSON 字符串(这就是我目前正在采用的方法),但我想知道是否有更优雅的方法来做到这一点。例如,如果这是一个实例匿名类型,那么我可以很容易地对其进行序列化

一些背景知识:这是一组通过 WebAPI 控制器传递给在浏览器中运行的单页应用程序的常量。在 C#(服务器)和 JS(客户端)世界中拥有相同的页面标识符集对于使用页面对象模式的浏览器自动化测试非常有用。

'LocalSiteMap' 静态类已经融入到一个相当成熟的项目中,因此将其更改为实例类或匿名类型对我来说并不是一个真正的选择。

0 投票
4 回答
348 浏览

c# - 静态类构造函数和静态类字段的范围

我在一个解决方案中有 2 个控制台应用程序(Console1 和 Console2)。两个应用程序都引用一个类库 (CL)。CL 包含一个静态类 (SC),其中包含每个构造函数设置的字段。

我的问题是,如果我在 Console1 中调用静态类,并且在第一次调用任何包含在 SC 中设置的静态方法和字段的 Console1 时调用 SC 的构造函数。现在,如果我同时运行 Console2,虽然是独立运行,并且还访问 SC,那么静态类 SC 的确切范围是什么?在 Console1 中调用其构造函数等任何更改是否会对 SC 在 Console2 中使用时的行为方式产生任何影响?

0 投票
2 回答
22080 浏览

c# - 重构静态类以与依赖注入一起使用

我们需要在代码中使用具有静态方法的非托管库。我想在我的代码中引入库操作作为依赖项。除了拥有静态方法之外,该库还有一个初始化方法和一个设置方法,它们都是全局的。所以我不能把它包装在一个实例类中,因为如果一个实例改变了一个设置,所有其他实例都会受到影响,如果一个实例被初始化,所有其他实例都会被重新初始化。

我想把它作为一个单例类来介绍。这样它将在一个实例类中,但只有一个实例,因此我不必担心更改设置或初始化。您如何看待这种方法?我对依赖注入模式很陌生,我不确定单例模式是否是一个好的解决方案?对于类似的情况,您的解决方案是什么?

编辑:初始化也需要一个参数,所以我不能只锁定方法调用并在每次调用时重新初始化和更改设置。

编辑 2:以下是一些方法的签名:

0 投票
1 回答
2073 浏览

c# - 为什么我不能访问静态类中的公共属性字段

我试图弄清楚为什么这不起作用......

我想Application从另一个类访问,例如...

谢谢。

编辑:问题是我没有像我想的那样在这个例子中尝试在 MainWindow 内。

0 投票
3 回答
278 浏览

c# - 应该如何在程序集中传递公共引用?

我正在尝试摆脱代码库中的静态类、静态辅助方法和单例类。目前,它们几乎遍布整个代码,尤其是实用程序类和日志库。这主要是由于需要模拟能力以及面向对象的设计和开发问题,例如可扩展性。将来我可能还需要引入某种形式的依赖注入,并愿意为此敞开大门。

基本上,我遇到的问题是关于传递常用引用的方法。这些是代码库中几乎每个类都使用的对象,例如日志接口、实用程序(帮助程序)类接口,可能还有一个类的实例,该类的实例为大多数类相关的程序集保存内部公共状态。

据我所知,有两种选择。一种是定义一个存储公共引用的类(或接口),如果您愿意,还可以定义一个上下文,并将上下文传递给创建的每个对象。另一种选择是将几乎每个类的每个公共引用作为单独的参数传递,这将增加类构造函数的参数数量。

这些方法中哪一种更好,每种方法的优缺点是什么,是否有更好的方法来完成这项任务?

0 投票
4 回答
998 浏览

c# - 在两个静态类之间共享通用功能

我需要在两个静态类之间共享一些通用功能:

这里有更好的设计吗?internal是我最后的选择,但实际上该方法SharedMethod在这两个类之外没有任何意义。

要求:

  1. 我不能将它们组合成一个类,我需要它们分开,一个通用的,另一个不是。

  2. 这些类不需要是严格静态的,但它们不应该是可实例化的或可继承的。

  3. SharedMethod可以属于任何一类,没关系。