我有一个接受8个参数的控制台应用程序 它变得有点混乱,所以我想知道是否可以做这样的事情 - 我们将它缩短为例: 我将创建一个名为userData的类,它将具有3个属性
class userData
{
public string Dir { get; set; }
public string FileFilter { get; set; }
public string OutPutFile { get; set; }
}
我想这样做一个字符串:
"{dir=\"c:\\\", FileFilter=\"*.txt\", OutPutFile=\"c:\\op.txt\"}"
然后程序可以根据该字符串自动分配类属性 像JavaScript中的eval函数
这可能吗? 还有其他建议吗?
由于 大卫
答案 0 :(得分:1)
您可以将输入作为JSON字符串传递(正确转义):
"{ \"Dir\" : \"c:\", \"FileFilter\" : \"*.txt\", \"OutPutFile\" : \"c:\\op.txt\"}"
然后使用DataContractJsonSerializer将此输入字符串序列化为userData对象:
class Program2
{
static void Main(String[] args)
{
String str = args[0];//check for length and handle error scenarios.
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str));
//deserialize
try
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(UserData));
UserData data = (UserData)ser.ReadObject(ms);
Console.WriteLine(data.Dir + ", " + data.FileFilter + ", " + data.OutPutFile );
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
[DataContract]
class UserData
{
[DataMember]
public string Dir { get; set; }
[DataMember]
public string FileFilter { get; set; }
[DataMember]
public string OutPutFile { get; set; }
}