Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не удаётся сериализовать объект, свойство которого единожды было указано как источник данн
|
|||
|---|---|---|---|
|
#18+
==================== MS Visual Studio 2010 .Net Framewrk 3.5 SP1 x 86 Windows XP SP3 x86 ==================== Добрый день. Написал когда-то класс ObservableCollection<T> , т.к. в работе потребовался словарь, оповещающий о своём изменении. Спустя некоторое время, решил на его основе создать механизм хранения настроек своих приложений. Для этого создал небольшой набор сериализуемых классов, которые позволяют решать данную задачу. Всё это находится в одной библиотеке здесь (полный проект MS VS 2010). Однако было бы удобно иметь некое графическое приложение, позволяющее работать с такими файлами настроек (они сериализуются в файлы). Сел писать WPF-приложение под это дело. Это работает нормально: Код: plaintext 1. 2. 3. 4. А вот это: Код: plaintext 1. 2. 3. 4. 5. MS VS 2010 SerializationException - не обработано Тип "MS.Internal.Data.EnumerableCollectionView" в сборке "PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" не помечен как сериализуемый. Т.е. если до сериализации свойство Dictionary моего класса я назначаю в качестве источника данных - сериализовать объект не удаётся. Не пойму почему. Этот вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Чем может быть вызвана ошибка и как обойти это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 17:55 |
|
||
|
Не удаётся сериализовать объект, свойство которого единожды было указано как источник данн
|
|||
|---|---|---|---|
|
#18+
Проблема решена: Нужно было: 1. В классе Код: plaintext Код: plaintext Код: plaintext Код: plaintext Код: plaintext Код: plaintext Тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 18:39 |
|
||
|
Не удаётся сериализовать объект, свойство которого единожды было указано как источник данн
|
|||
|---|---|---|---|
|
#18+
Мне помогли на форуме МСДН. Полный ответ выглядит так: PashaPashWPF создает обертку CollectionView для каждого IEnumerable, использованного в качестве датасорса. Обертка подписывается на события INotifyCollectionChanged. При сериализации ты используешь BinaryFormatter, который сериализует все подряд, включая подписчиков на события. Поставь на поле события аттрибут NonSerializable: [field:NonSerialized] public event NotifyCollectionChangedEventHandler CollectionChanged; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 18:44 |
|
||
|
|

start [/forum/topic.php?fid=21&fpage=59&tid=1442572]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 17ms |
| total: | 144ms |

| 0 / 0 |
