静态类......这样做可以吗?

时间:2009-05-29 20:46:04

标签: c# class static

我在C#中阅读了何时使用静态类,但最佳答案并不一定能回答我的问题。我有一个应用程序通过HTTP服务器与相当多的类似硬件连接。必须登录每个设备,凭证通常是相同的。我正在使用Properties.Settings.Default.etc来处理应用程序范围的设置;但是,为了方便起见,我会在单独登录设备时跟踪上次使用的用户名/密码。除非通过选项窗口进行更改,否则可以使用通过选项窗口设置的默认值,除非通过更改临时设置并在默认值中使用,否则保持不变。

无论如何,这就是场景......关于这个问题,我正在这样做:

private static class TemporarySettings
{
    public static string Username = Properties.Settings.Default["Username"].ToString();
    public static string Password = Properties.Settings.Default["Password"].ToString();
}

这是愚蠢的吗?

3 个答案:

答案 0 :(得分:3)

这不是愚蠢的,它可以完美地解决你的问题(如果确实如此,不要改变它)。但是,这种方法可能会导致一些问题,并且有助于了解这些问题。

  1. 如果您想在不重新启动应用程序的情况下更改用户名和密码,则无法使用该选项。您可以编写逻辑来查看配置文件以进行更改,并在值发生更改时重新加载。
  2. 如果您想要“重复使用”您的代码(特别是如果您为更改监控提供更多行为),请使用多组用户名和密码,您需要将其转换为实例。
  3. 如果你想要单独测试依赖于这个类的测试类,你将很难将这些值存在。
  4. 重申一下,你不应回避最简单的解决方案(正如你所定义的那样)因为这些潜在的问题,除非你认为你有可能被焚烧他们将来。否则,在需要时可能不会很难重构到实例类。

答案 1 :(得分:1)

更好的是,标记它们readonly或使用只有吸气剂的属性。

答案 2 :(得分:0)

您将用户名和密码设置为相同的值,但除此之外,没有。