使用字符串设置对象属性

时间:2015-01-01 06:05:29

标签: c# class

我有一个接受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函数

这可能吗? 还有其他建议吗?

由于 大卫

1 个答案:

答案 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; }
}

Doc for DataContractJsonSerializer