|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
привет всем! решаю такую задачку - есть произвольный объект...надо его отдельные свойства положить в лог. Пробую сериализовать этот произвольный объект, чтобы потом его распарсить как xml, Код: c# 1. 2. 3. 4. 5. 6.
таким образом Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
но собака IsSerializable возвращает False, то есть объект типа не сериализуем... Вопрос - кто и как решал бы такую задачу и как правильно распарсить произвольный объект ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 10:43 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslash, зачем масло масленное ну если хотите Код: c# 1. 2. 3. 4.
есть такой атрибут([Serializable]), на него ведется это свойство IsSerializable ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:14 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
Где-то в степи, спасибо, но проблема в том, что у прилетевшего на вход объекта может не быть такого атрибута.. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:18 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslash, если он прилетел откуда то и с делать с ним ничего не возможно, и вам лень писать враппер для него, или свою сериализацию объект - просто сосет ( выходит так?) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:24 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
объект настолько произвольный, что и Reflection к нему не применимо? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:32 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
Где-то в степи, да, но ведь в любом случае можно сериализовать в xml через XmlSerializer, только для чего сериализовать в каждом случае, если могут попадаться несериализуемые объекты... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:35 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
Antonariy, послушайте - рефлексия, это дорогостоящая и тяжелая операция... конечно если иного решения я не найду, то будет рефлексия...но не хотелось бы ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:40 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslashГде-то в степи, только для чего сериализовать в каждом случае, если могут попадаться несериализуемые объекты... ну вы то меня зачем об этом спрашивает? я вообще ваши задачи не знаю и что вы творите, у вас летают неопознанные объекты, вы их пытаетесь сериализовать ( да ладно х.с.) сериализуете, а как вы на той стороне холма их десериализуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 11:44 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslashпослушайте - рефлексия, это дорогостоящая и тяжелая операция... А вы тестили? Вам не приходило в голову, что эти траты могут быть вполне допустимыми? Или у вас задача парсить миллион объектов каждую секунду? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 14:49 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslashпослушайте - рефлексия, это дорогостоящая и тяжелая операция... Дык XmlSerializer тоже через рефлексию действует. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 15:00 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
petalvikflashslashпослушайте - рефлексия, это дорогостоящая и тяжелая операция... Дык XmlSerializer тоже через рефлексию действует. И тоже очень тормознуто. Даже если исползовать бинарную сериализацию (не применительно к этой задаче, а вообще), то ввиду возможного наличия несериализуемых типов придется использовать SurrogateSelector+StreamingContext, для последнего нужна реализация ISerializationSurrogate - её можно получить опять-таки только через рефлекшн. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 16:09 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
Удивительно, что до сих пор никто не предложил использовать dynamic. Имхо, это будет самый простой способ. Производительность.... да, о ней придётся забыть. В-общем, ждём топикстартера, пусть уточнит требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2014, 17:55 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
petalvik, спасибо, Мои уточнения: в процессе парсинга объекта мне нужно отфильтровывать свойства заданного типа. Цель парсинга объекта именно в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2014, 10:58 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslashpetalvik, спасибо, Мои уточнения: в процессе парсинга объекта мне нужно отфильтровывать свойства заданного типа. Цель парсинга объекта именно в этом. если речь идёт о типе свойства то в xml-е ты его не получишь, используй рефлексию ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2014, 11:26 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
pation, я это уже понял...использую такой код: тестовый класс: Код: c# 1. 2. 3. 4. 5. 6.
код парсинга: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Даты он ловит нормально...но в рекурсии в else{...} натыкаясь на ссылочный тип ListDate получаю баг переполнения стека. Каким образом мне распарсить ListDate ? вероятно проблема в использовании не тех флагов в (BindingFlags.Public | BindingFlags.Instance); ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2014, 11:57 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslashКаким образом мне распарсить ListDate ? что значит "распарсить" List<DateTime> ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2014, 12:53 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
Изопропил, это значит - в цикле перебрать все значения ListDate. Предполагается, что объект на входе произвольный и на месте этого свойства может быть свойство любого типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2014, 13:01 |
|
как правильно распарсить произвольный объект
|
|||
---|---|---|---|
#18+
flashslash, RefObj22(propertyInfo); - это не понятно, нагуя PropertyInfo подвергаешь рефлексии? Зы. такое ощущение что у тебя в голове каша, попробуй формально сформулировать поставленную задачу ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2014, 19:52 |
|
|
start [/forum/topic.php?fid=20&msg=38586008&tid=1403135]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 333ms |
total: | 477ms |
0 / 0 |