C# Ошибка набора значений GetDeclaredProperty без перегрузки для метода SetValue имеет один аргумент - PullRequest
0 голосов
/ 09 января 2020

В моем методе приведен код ниже (на самом деле asyn c stati c Task)

try
{
    string responseValues = JSONtoKeyValue(responseBody);
    Console.WriteLine("responseValues = " + responseValues);

    //var dict = responseValues.Split('|').Select(x => x.Split('=')).ToDictionary(x => x[0], x => x[1]);
    var dict = responseValues.Split('|')
        .Select(x => x.Split('='))
        .Where(x => x.Length > 1 && !String.IsNullOrEmpty(x[0].Trim())
        && !String.IsNullOrEmpty(x[1].Trim()))
        .ToDictionary(x => x[0].Trim(), x => x[1].Trim());

    Console.WriteLine("Dictionary created.");
    Console.ReadLine();

    foreach (KeyValuePair<string, string> entry in dict)
    {
        if (entry.Value == null)
        {
            dict.Remove(entry.Key);
        }
        else
        {
            string key = entry.Key;
            string value = entry.Value;

            if (cnsnt.GetType().GetTypeInfo().GetDeclaredProperty(key) != null)
            {
                cnsnt.GetType().GetTypeInfo().GetDeclaredProperty(key).SetValue(value);
            }
        }
    }
}
catch (System.Exception e)
{
    Console.WriteLine(e.Message);
}

Моя проблема двоякая. Во-первых, я не могу обработать дубликаты для словаря (хотел просто сохранить последнее значение, если ключ уже существует), но даже когда я пытаюсь без дубликатов, когда я пытаюсь проверить, есть ли у меня свойство, которое имеет ключ, Я получаю сообщение об ошибке Нет перегрузки для метода SetValue имеет только один аргумент.

Любая помощь будет оценена очень ..

1 Ответ

1 голос
/ 09 января 2020

Проверьте документацию с установленными значениями https://docs.microsoft.com/en-us/dotnet/api/system.reflection.propertyinfo.setvalue?view=netframework-4.8. На самом деле нет такой перегрузки с одним параметром.

Вот простой способ обновить значение словаря Как обновить значение, сохраненное в Словаре в C#?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...