2010-01-21 3 views

ответ

2

Нет, это не обозначено сериализуемым.

+0

Я должен был выбрать это давным-давно - он четко отвечает на мой вопрос. Я даже не ответил на свой вопрос. – IAbstract

2

Что вы на самом деле хотите сделать здесь? Как было отмечено, вы не можете использовать BinaryFormatter, если тип не сериализуем, но вам также необходимо будет рассмотреть все, что может быть , содержащее в контейнере. Они бы также должны быть сериализуемыми.

Вы можете обойти вопрос «должен быть [Serializable]», не используя BinaryFormatter, но большинство других сериализаторов (например XmlSerializer) будет иметь проблемы с не зная все подклассы авансовые и такие вещи, как не-отверждаемых свойств ,

Если у вас есть правильные версии .NET, вы также можете рассмотреть такие вещи, как XamlWriter, что может предоставить некоторые интересные возможности.

+0

То, что я делаю, связано с несколькими требованиями. Приложение реализует TcpChannels с общим объектом данных. Поскольку это MarshalByRefObject, он должен быть [Serializable]. Я знаю, что CompnonentModel.Container может создать сайт для вложенных контейнеров и компонентов для связи - я просто не испытываю проблем с архитектурой. У меня такое чувство, что скоро я буду. Компоненты и контейнеры - это пользовательские классы, которые наследуют IComponent. – IAbstract

+1

@dboarman - Мне кажется, вам нужно отправить простую модель данных (DTO или аналогичную), которая * представляет * данные, которые вы хотите повторно увлажнить; попытка отправить что-либо из ComponentModel не закончится хорошо. –

+0

Я понял, что ComponentModel на самом деле не будет ответом, который я ищу. Я создаю пользовательские «компоненты», которые будут как контейнером, так и компонентами, создавая древовидную структуру. Таким образом, я, вероятно, создаю пользовательский «компонент», полученный из общего Node , - и пользовательский интерфейс, делающий тип данных базового компонента вполне взаимозаменяемым. – IAbstract