在我的应用程序中使用自己的配置文件

时间:2010-01-26 22:48:47

标签: vb.net file configuration

作为我大学的练习练习,我们必须制作一个简单的房间预订系统,并配有自己的配置文件。我们不允许使用内置于VB.NET中的那个(教授希望我们适应不依赖于那样的东西)所以我自己做了。这是一个示例:

// Config file.
// First column is the variable name that will be used to
// reference the value in the second column. Seperate each
// setting with a new line.

MasterUser  Chris

DatabasePath    C:\Users\Chris\Desktop\Project.mdb

文件中的评论非常明显。我可以很好地解析文件,但是我遇到的问题是使变量与第一列中的变量名称相同。例如,我需要创建一个名为MasterUser的变量和一个名为DatabasePath的变量,它分别将ChrisC:\Users\Chris\Desktop\Project.mdb作为值。但我不知道如何制作一个名为的变量。

任何帮助都会很酷,谢谢。 :)

编辑:您无法在此处的代码视图中看到它,但配置文件中的变量名称和值由选项卡分隔:)

4 个答案:

答案 0 :(得分:1)

您可能需要考虑为配置文件使用更好的格式,例如XML。这将为您提供更多的库支持,以便在文件中进行解析和搜索...在这个简单的例子中,看起来您只需要一个简单的Dictionary(Of String, String),它可能不会有很多意义如果你还没有了解Generics:)

基本上你可以像这样加载值:

Dim settings As New Dictionary(Of String, String)
settings.Add("MasterUser", "Chris")
settings.Add("DatabasePath", "C:\Users\Chris\Desktop\Project.mdb")

然后,当您想要根据字典中的键检索值时,您可以这样做:

Dim master As String = settings("MasterUser") ' master = "Chris"

我希望这有助于澄清事情。

答案 1 :(得分:1)

嗯,从严格意义上讲,你不能在大多数编译语言中“从文件数据中创建一个变量”。你可以做的是创建一个名称 - 值关联集(这是.Net中的一个字典),并根据你从文件中读取的内容为它添加条目。

然而,大多数程序员所做的是“反转”那个逻辑:当你编写代码读取每一行时,它只是在Name上做了一系列的IF,看它是否被识别,如果是,那么就把它分配到相应的预定义同名变量。

有格式&专为此而设计的库(如XML,这就是内置配置使用它的原因),但这可能仍然是你不应该依赖的东西。

答案 2 :(得分:0)

由于您的配置文件没有以任何有意义的方式编译到您的代码中,因此您无法动态地创建变量(即类上的强类型属性或字段)。你有几个选择。

如果您想保留配置文件格式:

  1. 创建一个包含所有可能配置键作为属性的类。为该类提供一个知道如何将文件解析为类的Load()方法。
  2. 使用字典 - Generics版本或旧式System.Collections.Dictionary。您将使用字符串键检索元素。
  3. 如果您愿意将配置文件格式更改为XML,则可以使用序列化。这使您无需维护解析器,但需要更多设置。

答案 3 :(得分:0)

请参阅here,了解我对使用nini的其他SO问题的回答以及从何处下载。本质上,nini是一个简单的INI读/写库,用于配置文件。还有待观察的问题是,您的教授是否允许包含第三方开源?

希望这有帮助, 最好的祝福, 汤姆。