Установка свойств классов из NameValueCollection - PullRequest
4 голосов
/ 14 марта 2011

Я шифрую всю строку запроса на одной странице, а затем дешифрую на другой.Я получаю NameValueCollection всех значений, используя HttpUtility.ParseQueryString.

Теперь у меня есть класс, свойства которого соответствуют именам переменных строки запроса.Я изо всех сил, как установить значение свойств из строки запроса.

Вот мой код в процессе:

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

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Я бы, вероятно, пошел бы другим путем и нашел бы свойства (или поля, используя GetFields ()) и посмотрел бы их в параметрах запроса, а не перебирал параметры запроса.Затем вы можете использовать метод SetValue объекта PropertyInfo, чтобы установить значение свойства в 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);
    }
}
2 голосов
/ 14 марта 2011

Попробуйте:

typeof(ConfirmationPage).GetProperty(col.GetKey(i))
                        .SetValue(cp, col.Get(i), null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...