我在一个页面上加密我的整个查询字符串,然后在另一个页面上解密它。我正在使用HttpUtility.ParseQueryString获取所有值的NameValueCollection。
现在,我有一个类,其属性与查询字符串变量名称匹配。我正在努力如何从查询字符串中设置属性的值。
这是我正在进行的代码:
NameValueCollection col = HttpUtility.ParseQueryString(decodedString);
ConfirmationPage cp = new ConfirmationPage();
for(int i = 0; i < col.Count; i++)
{
Type type = typeof(ConfirmationPage);
FieldInfo fi = type.GetField(col.GetKey(i));
}
我正在看到通过反射检索值的示例 - 但是我想获得对ConfirmationPage类的属性的引用,并在循环中设置它的值 - col.Get(i)。
答案 0 :(得分:4)
我可能会采用另一种方式找到属性(或使用GetFields()的字段) 并在查询参数中查找它们,而不是遍历查询参数。然后,您可以使用PropertyInfo对象上的SetValue方法在ConfirmationPage上设置属性的值。
var col = HttpUtility.ParseQueryString(decodedString);
var cp = new ConfirmationPage();
foreach (var prop in typeof(ConfirmationPage).GetProperties())
{
var queryParam = col[prop.Name];
if (queryParam != null)
{
prop.SetValue(cp,queryParam,null);
}
}
答案 1 :(得分:2)
尝试:
typeof(ConfirmationPage).GetProperty(col.GetKey(i))
.SetValue(cp, col.Get(i), null);