我知道从配置文件中读取值而不是使用硬代码值,但我不确定这是不是一个好习惯。
首先我创建了一个实用程序类:
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){....}
...
}
Read函数尝试读取给定键的值。如果密钥不存在或值格式错误,则返回默认值。我将使用这个类:
public class MyClass
{
private int _age = ConfigValues.Read("Com.MyClass.Age", 0);
...
}
这样,我们可以使应用程序中的几乎所有变量都可以自定义。 这是一个好习惯吗? 请免费评论。
答案 0 :(得分:3)
认为你应该可以配置的人:
有不同看法的人:
答案取决于您的要求:为什么要在此处设置此值?
等。这不是一个简单的是 - 它是好的或不是坏的答案。
答案 1 :(得分:2)
配置文件总是一个好主意
例如,可以考虑 INI
文件。
在配置文件中引入版本编号方案非常有用 因此,您知道在文件中期望的值以及何时查找默认值时的值。当配置文件中缺少配置时,您可能会使用硬编码的默认值。
这为您提供了灵活性和后备。
同时决定是否要从申请中更新文件 如果是这样,您需要确保它可以管理文件的格式 您可能希望事先限制格式以使生活更简单。
您可以拥有 CSV 文件或“name=value
” INI 样式文件。
为您的代码和将要编辑它们的用户保持简单。
答案 2 :(得分:0)
执行:
用法:
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。
如果您使用Windows窗体应用程序,则可以在离开应用程序时更改Program.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();
}
}
答案 3 :(得分:0)
配置文件还允许您更新值而无需执行其他构建来更改单个值。这对于具有不同配置值(日志级别,用户名等)的所有环境具有一个构建是有用的。此外,如果您缓存值并定期从文件更新,它允许您在应用程序仍在运行时动态进行更改。在某些情况下这可能有点过分,但在调试某些问题时非常有用。