使用字符串设置对象属性

Set object properties using a string

我有一个接受 8 个参数的控制台应用程序 它变得有点混乱,所以我想知道是否可以做这样的事情 - 我们将简化示例: 我将创建一个名为 userData 的 class,它将具有 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\"}"

然后程序可以根据那个字符串自动分配class属性 类似于 JavaScript

中的 eval 函数

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

谢谢

您可以将输入作为 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