所以基本上我有这个字符串看起来像查询字符串"key1=value1&key2=value2"
(或者JSON
我还没有决定它。所以基本上我想把这个字符串转换成一个对象,然后用反射来枚举它的属性(或字段)。我已经看到了一些名为ExpandoObject
的内容,但在我的情况下,它不会有帮助,因为我无法枚举它的属性,而且我的意思是我的属性,例如{{1} }和.Key1
(来自上面的字符串)有反射(或者可能是有可能的,我做错了)。无论如何,任何帮助和建议将不胜感激。
修改
我想要实现的是这个。我有一个对象,而不是我需要在db中存储该对象的一些对象,作为上面给出的示例字符串,之后我需要从该字符串再次重新创建该对象。 (只是为了拥有与我保存的对象相同的字段属性)所以我有这个方法可以直接或间接调用。如果我直接调用它,我可以创建传递给此方法的对象(.Key2
)设置它的属性,然后将其传递给方法,如果间接调用,我将其他对象传递给另一个调用最终方法的方法。到第一个方法我传递一些其他对象,再加上一个anonymus对象,然后将属性与SomeParamsObject
合并(通过传递给它的其他一些对象在第一个方法内创建)并传递给最终方法。我还需要将这个anonymus对象存储在DB中的某个位置,因为调用可能会从代码的其他模块重复,这就是我需要重构它的原因,要将所有这些更改为某个SomeParamsObject
集合,它可能需要4-5天,因为这个方法实际上是从我的代码模块中调用的。
答案 0 :(得分:1)
您不能使用字典或NameValueCollection
吗?
var values = new NameValueCollection();
var pairs = "key1=value1&key2=value2".Split('&');
foreach(var kvp in pairs)
{
var parts = kvp.Split('=');
values.Add(parts[0], parts[1]);
}
然后您可以使用键访问您的值:
var value1 = values["key1"];
答案 1 :(得分:1)
使用HttpUtility.ParseQueryString方法从查询字符串中创建NameValueCollection
。
var collection = HttpUtility.ParseQueryString("key1=value1&key2=value2");
foreach (string key in collection)
{
string value = collection.Get(key);
//Do whatever with key and value
}