2009-07-28 59 views
1

我有一个想法,即从配置文件读取值而不是使用硬代码值,但我不确定这是否是一种好的做法。阅读配置值而不是使用幻数是好的吗?

首先我创建了一个工具类:

public class ConfigValues 
{ 
    public static int Read(string key, int defaultValue){....} 
    public static string Read(string key, string defaultValue){....} 
    public static bool Read(string key, bool defaultValue){....} 
    ... 
} 

读功能将尝试给定键读取值。如果密钥不存在或值的格式不正确,则返回默认值。而且我要使用这个类,如:

public class MyClass 
{ 
    private int _age = ConfigValues.Read("Com.MyClass.Age", 0); 
    ... 
} 

这样,我们就可以在应用程序定制使几乎所有的变量。 这是一个很好的做法吗? 请评论它是免费的。

+0

你使用网络或Windows应用程序? – Shimmy 2009-07-28 03:44:35

+0

什么平台,请重申您的问题,缩小问题到您正在使用的环境 – Shimmy 2009-07-28 03:47:08

回答

3

的人谁认为你应该做的事情配置:

谁的人有不同的想法:

答案都归结到您的要求:你为什么要在这里设置这个值?

  • 难道不同的用户会设置不同吗? =>配置文件。
  • 它只是稍后更改的默认值吗? =>硬编码。
  • 是否影响程序的操作使用(即浏览器的默认主页)? =>配置文件。
  • 这是否会对计划的各个部分产生复杂的影响? ...答案取决于您的用户群。

等等这不是一个简单的yes-it's-good或no-it's-bad的答案。

2

配置文件总是一个好主意。
例如,考虑INI文件。

在配置文件中引入版本编号方案将非常有用。
因此,您知道文件中的期望值以及何时查找缺省值。当配置文件中缺少配置时,可能会使用硬编码缺省值。

这给你灵活性和后备。

还决定您是否将从您的应用程序更新文件。
如果是这样,你需要确定它可以管理文件的格式。
您可能希望事先限制格式以简化生活。

你可以有CSV文件或 “name=valueINI样式文件。
让您的代码和编辑它们的用户保持简单。

0

务必:

  • 创建一个新的C#项目
  • 菜单 - >项目 - > [项目名称]属性
  • 打开设置面板
  • 创建您的设置(它是强类型)

用法:

class Program 
{ 
    static void Main(string[] args) 
    { 
     int setting1 = Properties.Settings.Default.Setting1; 
     Properties.Settings.Default.Setting1 = 43534;    
     Proerties.Settings.Default.Save(); 
    } 
} 

请注意,属性是一个命名空间,您可以导入它,以便您可以使用Settings.Default.Setting1。

Here is a more detailed link

如果您使用Windows窗体应用程序,则可以更改程序。CS文件离开应用程序时,保存所有更改的设置:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     //Add this line 
     Application.ApplicationExit += 
          new EventHandler(Application_ApplicationExit); 
     Application.Run(new Form1()); 
    } 

    //and this method: 
    static void Application_ApplicationExit(object sender, EventArgs e) 
    { 
     Properties.Settings.Default.Save(); 
    } 
} 
0

配置文件还允许你没有做另一个构建改变单一的值更新值。这对于为所有环境构建一个具有不同配置值(日志级别,用户名等)的构建很有用。此外,如果您缓存值并定期从文件更新,则可以在应用程序仍在运行时随时进行更改。在某些情况下,这可能有些过分,但它可以在调试某些问题时非常有用。

相关问题