设置类来自 NameValueCollection 的属性

发布于 2024-10-22 20:00:29 字数 600 浏览 1 评论 0原文

我在一个页面上加密整个查询字符串,然后在另一页面上解密。我使用 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) 。

I'm encrypting my entire query string on one page, then decrypting it on another. I'm getting a NameValueCollection of all the values using HttpUtility.ParseQueryString.

Now, I have a class whose properties match the query string variable names. I'm struggling how to set the value of the properties from the query string.

Here is my code in progress:

        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));               

        }

I'm seeing samples of retrieving values through reflection - but I'd like to get a reference to the property of the ConfirmationPage class and set it with it's value in the loop - col.Get(i).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

戏剧牡丹亭 2024-10-29 20:00:29

我可能会采取另一种方式并找到属性(或使用 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);
    }
}

I would probably go the other way and find the properties (or fields using GetFields())
and look them up in the query parameters rather than iterate over the query parameters. You can then use the SetValue method on the PropertyInfo object to set the value of the property on the 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);
    }
}
庆幸我还是我 2024-10-29 20:00:29

尝试:

typeof(ConfirmationPage).GetProperty(col.GetKey(i))
                        .SetValue(cp, col.Get(i), null);

Try:

typeof(ConfirmationPage).GetProperty(col.GetKey(i))
                        .SetValue(cp, col.Get(i), null);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文