使用字符串设置对象属性
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; }
}
我有一个接受 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; }
}