Как извлечь значения из объекта в c#? - PullRequest
0 голосов
/ 31 января 2020

У меня есть метод Test, который хранит строки в списке. Этот список передается другому методу, который принимает объект. Ниже приведен код. Теперь я хочу получить 2,3 и 4,5 из объекта.

public static void Test()
        {
            List<string> list = new List<string>();
            list.Add("2,3");
            list.Add("4,5");
            Test1(list);
        }

public static void Test1(object obj)
        {
           //How to get the values from object. I want to retrieve 2,3 and 4,5.
        }

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Во всяком случае, это не очень хороший способ, брат, это значит, что go. Измените немного Test1 для универсальности

public static void Test1<T>(object obj)
{
    //How to get the values from object. I want to retrieve 2,3 and 4,5.
    if (obj is IEnumerable<T>)
    {
        // Vulgar display of power
        foreach (var stuff in new List<T>((IEnumerable<T>)obj))
        {
            Console.WriteLine("Stuff from the grave : {0}", stuff);
        }
    }
    else if (obj is T)
    {
        // My god... so wrong way
    }

}

Используйте вот так

    List<string> list = new List<string>();
    list.Add("2,3");
    list.Add("4,5");
    Test1<string>(list);

Но вы уверены, что должны go таким образом? Для примера рассмотрим переопределение Test1.

0 голосов
/ 31 января 2020

Вы можете выполнить итерацию obj, используя foreach

public static void Test1(object obj)
{
    foreach(var value in (List<string>)obj)
    {
        Console.WriteLine(value);
    }
}

Однако я предлагаю изменить параметр object на List<string>

public static void Test1(List<string> listValues)
{
    foreach(var value in obj)
    {
        Console.WriteLine(value);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...