project.Context работает не для всех типов данных

Hrukbot

Client
Регистрация
13.06.2017
Сообщения
18
Благодарностей
0
Баллы
1
Добрый день,

Мне нужно использовать по всему шаблону переменную - объект, класс которого определен во внешней сборке?

Я столкнулся с проблемой использования project.Context
Оказалось что переменная project по крайней мере в ProjectMaker может пересоздаваться. А project.Context сериализуется сохраняется, потом загружается и десериализуется.
Кроме того пересоздаются все мои классы и обнуляются статические данные в них, так что я и в статических полях не могу свои переменные хранить.

Я хочу хранить в project.Context древовидный объект, все типы свойств которого определены во внешней сборке. И похоже на то, что сериализация для project.Context работает только для классов определенных внутри шаблона.

Вопрос: как мне сохранить в project.Context объект класса определенного во внешней сборке?
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 448
Баллы
113
Зачем создавать тему в скрытом разделе? Что в ней такого что можно спалить и тема умрет? Нечего! Для подобных тем, существуют специальные разделы на форуме, в вашем случае вам сюда - тык
Я понимаю что вы человек новый, все мы когда то такими были, на форуме есть раздел для новичков! А этот раздел предназначен для того чтоб поделится своими идеями, наработками для разных проектов, обсудить какие то темы по заработку.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Если по заголовку сабжа, то не понятно, как project.Context может выборочно работать для каких то типов данных.
Т.к. project.Context это по сути переменная типа Dictionary<string, object> в которую можно пихать объекты любых типов.

Оказалось что переменная project по крайней мере в ProjectMaker может пересоздаваться.
Пример можете привести?

А project.Context сериализуется сохраняется, потом загружается и десериализуется.
Откуда эта информация насчет сериализации? Вообще не понятно при чем тут сериализация.

Я хочу хранить в project.Context древовидный объект, все типы свойств которого определены во внешней сборке.
Не замечал никаких странностей. Подключаю dll со своими классами или какую то другую сборку и без проблем сохраняю в project.Context объекты.
Собственно для этого и юзаю/нужен project.Context, т.к. в зенке кроме string типа нет других переменных, что крайне неудобно в некоторых случаях.

Вопрос: как мне сохранить в project.Context объект класса определенного во внешней сборке?
project.Context["keyName"] = new SomeClass();

Ну естественно перед этим прописать нужные namespace, или использовать полное имя класса.
 
  • Спасибо
Реакции: Yuriy Zymlex и Dimionix

Hrukbot

Client
Регистрация
13.06.2017
Сообщения
18
Благодарностей
0
Баллы
1
Пример можете привести?
Создайте два блока с C# кодом.
В одном напишите project.Context["keyName"] = new SomeClass();
В другом var x = 0; и точку останова на этой строчке.

После запуска в логах будет ошибка сериализации данных.
Я думаю сериализация происходит только при пошаговой отладке.

Так же вы можете увидеть что значение project.GetHashCode() изменилось. И даже больше, все статические поля в ваших классах очистились.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
upload_2017-6-16_11-52-25.png
upload_2017-6-16_11-54-20.png

После запуска в логах будет ошибка сериализации данных.
Я думаю сериализация происходит только при пошаговой отладке.

Так же вы можете увидеть что значение project.GetHashCode() изменилось. И даже больше, все статические поля в ваших классах очистились.
Понятно почему с такой траблой не сталкивался, т.к. дебагом в зенке не пользуюсь. Пробовал как то несколько раз, все висло наглухо, плюс ошибки какие то были, поэтому больше и не пользовался.
Т.е. другими словами если не пользоваться дебагом, то project.Context работает так как надо.

Сейчас попробовал в последней версии 5.11.3.0, вроде на простом пример норм отработало, без глюков. Что будет на более сложном, х.з., надо тестить.
Там скорее всего дело не именно в project.Context, а бага в общем, а project.Context это уже следствие.

Версия зенки какая? Скиньте скрин ошибки, чтобы визуально представлять о чем речь.

Если зенка последняя(т.к. если более ранняя, возможно уже пофиксили баг), то значит писать сюда http://zennolab.com/discussion/forums/bagi.132/
С пошаговыми описанием как воспроизвести баг, плюс желательно минимальный проект приложить. Так дело быстрее пойдет.:-)
 
  • Спасибо
Реакции: Dimionix

Hrukbot

Client
Регистрация
13.06.2017
Сообщения
18
Благодарностей
0
Баллы
1
Скиньте скрин ошибки, чтобы визуально представлять о чем речь.
Вот простенький пример. Ошибку сериализации воспроизвести не удалось, но в примере видно, что объекты своих классов не сохраняются в project.Context во время отладки:
upload_2017-6-16_14-1-1.png

1) с отладкой
2) без отладки

Если зенке не удается сариализовать объект, что чаще всего она сохраняет null в project.Context, что не есть хорошо, т.к. это скрытая ошибка и делает больше геморроя чем открытая

PS. Я не представляю себе программирования без пошаговой отладки, поэтому эта ошибка была для меня большой проблемой. Но я решил ее все-таки, большим костылем.
 

Вложения

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