作为我大学的练习练习,我们必须制作一个简单的房间预订系统,并配有自己的配置文件。我们不允许使用内置于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的变量,它分别将Chris
和C:\Users\Chris\Desktop\Project.mdb
作为值。但我不知道如何制作一个名为的变量。
任何帮助都会很酷,谢谢。 :)
编辑:您无法在此处的代码视图中看到它,但配置文件中的变量名称和值由选项卡分隔:)
答案 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)
由于您的配置文件没有以任何有意义的方式编译到您的代码中,因此您无法动态地创建变量(即类上的强类型属性或字段)。你有几个选择。
如果您想保留配置文件格式:
如果您愿意将配置文件格式更改为XML,则可以使用序列化。这使您无需维护解析器,但需要更多设置。
答案 3 :(得分:0)
请参阅here,了解我对使用nini的其他SO问题的回答以及从何处下载。本质上,nini是一个简单的INI读/写库,用于配置文件。还有待观察的问题是,您的教授是否允许包含第三方开源?
希望这有帮助, 最好的祝福, 汤姆。