Рефлексия. Получить объект использую свойство в котором лежит List<>

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
Прошу помочь! Сам всё что можно перегуглил и что-то ни фига не смог решить свою проблему!
Проблемы как таковой то в принципе особо и нет, просто хочу переделать метод в котором находиться 4-е вложенных foreach чтобы распарсить объект LimitAds.
Хочу при помощи рефлексии сделать это более красиво ну и по ходу дела немного разобраться что это такое!
Вопрос попробовал оформить на скрине.
Буду благодарен любым подсказкам. Спасибо!

P.S кое-где перепутал слова рекурсия с рефлексией, но вроде подшаманил :-).

2020-11-29_15-17-23.jpg
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ничего не понятно, но очень интересно :-)
возникает резонный вопрос, а зачем структурированный объект передавать как неопределенный объект ? передавай его в том варианте как он изначально определен.
Ну или если прям вот так и надо через одно место делать, то приводи к нужному классу после передачи в функцию, ну или в подфункцию. короче там где это надо :-)
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
возникает резонный вопрос, а зачем структурированный объект передавать как неопределенный объект ?
я хочу уйти от 4-х циклов foreach => хочу закидывать в метод объект, находить в нем список => найденный список прокидывать в foreach => в этом цикле при переборе объектов вызывать рекурсию и кидать туда эти объекты => и так я планирую добраться до самого дна :D . Но пока вот не могу разобраться как мне прокинуть найденный список в цикл!
Ну или если прям вот так и надо через одно место делать, то приводи к нужному классу после передачи в функцию, ну или в подфункцию. короче там где это надо :-)
- а вот я здесь могу тоже ответить
ничего не понятно, но очень интересно :-)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
замени object на явный тип передаваемых данных (LimitAds), да и работай с ними спокойно, хоть 100500 раз в рекурсии :-)
или приведи object к этому типу данных LimitAds sdfjdslfkj= (LimitAds) ob; кажется так, точно уже не помню.

68022
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
я хочу уйти от 4-х циклов foreach => хочу закидывать в метод объект, находить в нем список => найденный список прокидывать в foreach => в этом цикле при переборе объектов вызывать рекурсию и кидать туда эти объекты => и так я планирую добраться до самого дна :D . Но пока вот не могу разобраться как мне прокинуть найденный список в цикл!
- а вот я здесь могу тоже ответить
Если я правильно понял, поступает динамический ответ от сервера, на что инструкция должна реагировать соответственно?
Если нет, то зачем рефлексия?
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
Если я правильно понял, поступает динамический ответ от сервера, на что инструкция должна реагировать соответственно?
Если нет, то зачем рефлексия?
да нет никакого динамического ответа от сервера, у меня есть строго типизированные объекты, которые чтобы распарсить надо, делать вот как пример - в методе 5 вложенных циклов foreach.
2020-11-29_17-05-08.jpg

Мне это мягко говоря не нравится.
И вот сижу голову ломаю, как-бы это красиво при помощи рефлексии и рекурсии обыграть.
Вот и всё.
Проблемы как таково как я сказал выше нет, мучаюсь так сказать в рамках саморазвития.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
да нет никакого динамического ответа от сервера, у меня есть строго типизированные объекты, которые чтобы распарсить надо, делать вот как пример - в методе 5 вложенных циклов foreach.
если объект строго типизирован, то нужна только рекурсия. рефлексия излишнее в этой задаче.
просто передавай в процедуру список в том виде как он формируется в кубике c#, а в самой процедуре делай рекурсивный вызов этой же процедуры, предварительно сформировав для работы новый список в том же типе данных что и начальный.
https://metanit.com/sharp/tutorial/2.11.php вот немного по рекурсии
 
  • Спасибо
Реакции: p-sergei
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
да нет никакого динамического ответа от сервера, у меня есть строго типизированные объекты, которые чтобы распарсить надо, делать вот как пример - в методе 5 вложенных циклов foreach.
Посмотреть вложение 68024

Мне это мягко говоря не нравится.
И вот сижу голову ломаю, как-бы это красиво при помощи рефлексии и рекурсии обыграть.
Вот и всё.
Проблемы как таково как я сказал выше нет, мучаюсь так сказать в рамках саморазвития.
вот я и говорю, что сам себе усложнил, я бы использовал рекурсию лишь в случае динамики, когда нужно повести логику к нужной инструкции от значений ответа.

Как пример со строго типизированным объектом
C#:
string response = project.Variables["response"].Value;
var manager = JsonConvert.DeserializeObject<Manager>(response);

var myAds = manager.Data
                    .Where(x => x.Active == true)
                    .Select(x => new AdInformation {
                        Id = x.Id,
                        Price = (int)x.Price,
                        Type = x.Type,
                        paymentMethodId = x.PaymentMethod.Id,
                        currencyId = x.PaymentMethod.CurrencyId
                    }).ToList();
 
Последнее редактирование:
  • Спасибо
Реакции: p-sergei и Alexmd

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)