c#将字符串转换为Variable

时间:2017-03-24 20:13:23

标签: c# winforms

我正在使用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 []数组中。

我得到的是如何将它们变为实际变量?

3 个答案:

答案 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"]
}

然后,您正在处理可以轻松移动的强类型实体。

您也可以使用不同的类型,例如,您可能会认为Postnetbool,而下周可能会有另一个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#类创建者,就像实体框架一样。

https://msdn.microsoft.com/en-us/library/bb126478.aspx