powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не сериализируется коллекция на основе CollectionBase
13 сообщений из 13, страница 1 из 1
Не сериализируется коллекция на основе CollectionBase
    #32450259
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс спокойно сериализируется пока нет Properties типа унаследованного от CollectionBase.

Вот что пишет при попытке создать объект XmlSerializer:
Код: plaintext
1.
2.
An unhandled exception of type 'System.InvalidOperationException' occurred in system.xml.dll

Additional information: There was an error reflecting type 'Cherry.CherryLabels.Labels'.


помогите!!!
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450262
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для успешной сериализации коллекции есть несколько обязательных условий.
В часности должен быть реализован Item метод(индексер) и Count. Если населдуешь от Ienumerator, то и Enumerator возвращать нужно, доступ к коллекции во время сериализации будет через него.

А лучше, выложи плиз, код класса.
Если члены класса - экземпляры другого твоего класса то и его тоже.

Magnus
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450270
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public class LabelsCollection : CollectionBase
	{		
		#region Public methods	
		
		public Label this[int Index]
		{
			get{return (Label) this.InnerList[Index];}
			set{this.InnerList[Index] = (object) value;}
		}

		public int Count
		{
			get{return base.Count;}
		}

		public void Add(Label label)
		{
			InnerList.Add((object) label);
		}

		#endregion
	}


Item я так понял можно индексатором заменить, он тоже сходит за дефаултный аксессор, а вот с count непонятно, подскажите.
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450271
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще теперь при попытке создать XmlSerializer не ругается, зато ругается когда при самой серализации serializer.Serialize(fs, this.Labels)

пишет:
Код: plaintext
Additional information: There was an error generating the XML document.


гыгы очень информативно ;))
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450281
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже лучше. Сейчас под рукой даже студии нет, поэтому по памяти(или подожди до понедельника :) ), для доступа к внутренней коллекции должен использоваться List a не InnerList.
Label есть что? Твой класс?
Его тоже приведи. В обоих прицепи [Serializable] перед обьявлением класса.

Кстати бинарная сериализация гораздо быстрее и компактнее, но использовать ее или нет зависит от твоих конкретных нужд.

Magnus
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450284
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про бинарный я слышал, но мне пока нужна читаемость, думаю переделать его труда не составит.

Суть всего этого в том, что на самом то деле в коллекции лежат объекты унаследованне от Labels. Может быть из-за этого у меня траблы ???
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450287
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще сразуже как реализовать Count и IEnumerator. В том кусочке что я постил про Count говорит что я скрыл базовый метод, тоже пишет и про GetEnumerator().
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450293
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин. Нет сейчас под рукой нифига.
public in Count{
get{return List.Count;}
}

С бинарным там, просто, только сериализатор поменять.

GetEnumerator просто возвращай базовый от List. У меня так и работало.

Далее, Labels. Траблы именно из за них.
Вероятно, придется тебе сделать враппер для него. Не уверен, реализует ли этот класс сериализацию.
Для проверки, изпользуч что то простое, стринги. В ьтом виде должно рабоотать. Для лабелв сделай враппер с передачей всех свойств и наследуйся от него.

Magnus
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450300
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм.. получатеся контролы не сериализируются???, что за нафиг, все перехожу на 1с ;)), кстати а лаблы это мои не от узерконторл.
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450320
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сами контролы насколько я знаю - нет.
Что нам собственно нужно от контрола? Его свойства, на их основе он может быть создан в любой момент, а их можно вытащить и сериализовать через враппер.
Лаблы теой класс? Не наследованный от UserControl?
Ну так тащи! :)
Кстати, то что я тут описывал на счет враппера называется Memento Pattern,
только что нашел :)
http://www.ondotnet.com/pub/a/dotnet/2002/09/09/memento.html

Magnus
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450331
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык с контролом я лажанулся порядочно мне теперь что бы перерисовать кусочек приходится перерисовывать все ;((.

Так что у меня новая идея и соответсвенно вопрос, а можно ли у юзерКонтрола запретить сериализацию всех properties кроме тех каие мне нужы ???,

А с МементоПатерн класно придумали че интесно я такое не придумал ;)), кстати там показано как бинарное форматирование использовать, а то я читать то читал но на практике не применял.,

Покашто остановлюсь на МементоПатерн, тока немного доработаю, унаследую ЮзерКонтрол в нем зделаю всю эту фигню а уже потом поставлю под свои контролы.
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450333
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не передумал ;)), ISerializable вот выход все что хочу то и сериализирую ;))
...
Рейтинг: 0 / 0
Не сериализируется коллекция на основе CollectionBase
    #32450379
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будешь сам реализовывать? Ну ок. Вот тебе еще материальчик.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemruntimeserializationiserializableclasstopic.asp

Удачи!
Потом расскажешь :)

Magnus
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не сериализируется коллекция на основе CollectionBase
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]