我正在使用C#将MS Batch文件转换为WindowsForms。
我需要从文本文件中读取key = value行列表,并将键转换为变量。
示例文字
MailClass =标准
选择性= MailNoErrors
MailForeigns =无
ImbType = FS
POSTNET =否
我想将这些设置为根据需要在方法和表单之间传递的变量。
string MailClass = "Std";
string Selectivity = "MailNoErrors";
string MailForeign s= "No";
string ImbType = "FS";
string Postnet = "No";
我正在考虑将它们加载到List []数组中。
我得到的是如何将它们变为实际变量?
答案 0 :(得分:2)
使用Dictionary
更适合手头的任务。
一个例子是这样的:
Dictionary<string, string> myDictionary = new Dictionary<string, string>(); // make this global
var file = File.ReadAllLines(path);
List<string> TempList = new List<string>(file);
TempList.ForEach((line) =>
{
string[] TempArray = line.Split('=');
myDictionary.Add(TempArray[0], TempArray[1]);
});
完成后,您只需从key/value
访问Dictionary
对。
答案 1 :(得分:0)
我会向前迈出一步并创建一个类:
public class MyVars {
public string MailClass {get;set;}
public string Selectivity {get;set;}
public string MailForeigns {get;set;}
public string ImbType {get;set;}
public string Postnet {get;set;}
}
并在另一个答案中Dictionary
初始化它:
var myVars = new MyVars {
MailClass = dict["MailClass"],
Selectivity = dict["Selectivity"],
MailForeign = dict["MailForeigns"],
ImbType = dict["ImbType"],
Postnet = dict["Postnet"]
}
然后,您正在处理可以轻松移动的强类型实体。
您也可以使用不同的类型,例如,您可能会认为Postnet
是bool
,而下周可能会有另一个int
var。
public class MyVars {
public string MailClass {get;set;}
public string Selectivity {get;set;}
public string MailForeigns {get;set;}
public string ImbType {get;set;}
public bool Postnet {get;set;}
public int SomeNewVar {get;set;}
}
var myVars = new MyVars {
MailClass = dict["MailClass"],
Selectivity = dict["Selectivity"],
MailForeign = dict["MailForeigns"],
ImbType = dict["ImbType"],
Postnet = dict["Postnet"]=="YES",
SomeNewVar = int.Parse(dict["SomeNewVar"])
}
答案 2 :(得分:-1)
如果您希望文本文件中的键值对转换为c#属性,那么我认为您必须使用T4模板。
我将数据库表的T4模板用于C#类创建者,就像实体框架一样。