2013-11-17 2 views
2

У меня есть объект C#, который содержит большой список (10-100 МБ) и некоторые другие свойства. Я хочу сериализовать объект, но я не хочу сериализовать список. есть ли простой способ сделать это?сериализовать часть объекта в C#

Спасибо!

+1

Какой тип сериализации вы хотите? XML, Binary, ... –

+0

на данный момент его XML –

ответ

5

Поскольку это помечено , это может быть столь же просто, как добавление [XmlIgnore] соответствующему свойству:

[XmlIgnore] 
public List<Foo> Items {get;set;} 

Тогда просто использовать XmlSerializer как обычно.

Если он должен быть управляемым (иногда да, иногда нет), то альтернатива не добавить:

public bool ShouldSerializeItems() { 
    // your logic here 
} 

Эта модель признана многими сериализаторов, XmlSerializer включены.

+0

Спасибо, первый вариант, похоже, работает :) Не могли бы вы снова объяснить второй? –

+0

@Amir Сериализатор в основном проверяет несколько шаблонов, основанных на имени, которые он использует. Если существует общедоступный метод BULSSULIALize *() (для соответствующего именованного члена), он вызывает этот метод во время сериализации, чтобы решить, следует ли сериализовать этот член или нет –

+0

Simiarly, сериализатор проверяет свойство с именем '* Specified' (для соответствующий именованный член). – Brian

0

Если вы имеете в виду сериализацию, загружающую объект из базы данных, то я могу порекомендовать NHibernate, вы просто отмечаете, вы хотите включить ленивую загрузку в Списке, и ваш объект вернется, с Items установлен в null (и если вы все еще находятся в транзакции, Items загрузит после и только после попытки доступа к нему, если вы уже не работаете с транзакцией, вы получите исключение nullPointer, я думаю) ... но в принципе, Lazy-loading в любом его виде, безусловно, является принципом , вы должны следить.

EDIT: пропустил теги, позор мне

+0

Сериализация обычно означает «к blob/clob». Работа с базами данных, как правило, «настойчивость/материализация». Но да, термины иногда используются довольно взаимозаменяемо. –

Смежные вопросы