Интерфейсы IFormatter и IRemotingFormatter
Интерфейсы IFormatter и IRemotingFormatter
Независимо от того, какой формат вы выберете для использования, все они получаются прямо из System.Object и поэтому не могут иметь общего набора членов, наследуемого от какого-либо базового класса сериализации. Однако типы BinaryFormatter и SoapFormatter имеют общее множество членов по причине реализации интерфейсов IFormatter и IRemotingFormatter (тип XmlSerializer не реализует ни одного из них).
Интерфейс System.Runtime.Serialization.IFormatter определяет базовые методы Serialize() и Deserialize(), выполняющие основную работу по перемещению объектных графов в поток и из него. Кроме этих членов, IFormatter определяет несколько свойств, которые используются реализующим типом в фоновом режиме.
public interface IFormatter {
SerializationBinder Binder { get; set; }
StreamingContext Context { get; set; }
ISurrogateSelector SurrogateSelector { get; set; }
object Deserialize(System.IO.Stream serializationStream);
void Serialize(System.IO.Stream serializationStream, object graph);
}
Интерфейс System.Runtime.Remoting.Messaging.IRemotingFormatter (который используется в .NET на уровне удаленного взаимодействия) предлагает перегруженные члены Serialize() и Deserialize(), более подходящие для использования в распределенных операциях. Заметьте, что IRemotingFormatter получается из более общего интерфейса IFormatter.
public interface IRemotingFormatter : IFormatter {
object Deserialize(Stream serializationStream, HeaderHandler handler);
void Serialize(Stream serializationStream, object graph, Header[] headers);
}
Хотя в большинстве операций сериализации вам, возможно, и не придется взаимодействовать с этими интерфейсами непосредственно, не забывайте о том, что интерфейсный полиморфизм дозволяет использовать экземпляр BinaryFormatter или SoapFormatter по ссылке на IFormatter. Таким образом, чтобы построить метод, выполняющий сериализацию объектного графа с помощью любого из этих классов, вы можете использовать следующий программный код.
static void SerializeObjectGraph(IFormatter itfFormat, Stream destStream, object graph) {
itfFormat.Serialize(destStream, graph);
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
4.3. Интерфейсы
4.3. Интерфейсы Интерфейс (interface) служит для спецификации параметров модели, которые видимы извне без указания их внутренней структуры. В языке UML интерфейс является классификатором и характеризует только ограниченную часть поведения моделируемой сущности. Применительно
5.3. Интерфейсы .
5.3. Интерфейсы . Интерфейсы являются элементами диаграммы вариантов использования и были рассмотрены в главе 4. Однако при построении диаграммы классов отдельные интерфейсы могут уточняться и в этом случае для их изображения используется специальный графический символ
10.2. Интерфейсы
10.2. Интерфейсы Следующим элементом диаграммы компонентов являются интерфейсы. Последние уже неоднократно рассматривались ранее, поэтому здесь будут отмечены те их, особенности, которые характерны для представления на диаграммах компонентов. Напомним, что в общем
Глава 2. Интерфейсы
Глава 2. Интерфейсы void *pv = malloc(sizeof(int)); int *pi = (int*)pv; (*pi)++; free(pv); Аноним,1982 В предыдущей главе было показано несколько приемов программирования на C++, позволяющих разрабатывать двоичные компоненты повторного использования, которые со временем могут быть модернизированы. По
Интерфейсы и IDL
Интерфейсы и IDL Определения методов в IDL являются просто аннотированными аналогами С-функций. Определения интерфейсов в IDL требуют расширения по сравнению с С, так как С не имеет встроенной поддержки этого понятия. Определение интерфейса в IDL начинается с ключевого слова
Прикладные интерфейсы
Прикладные интерфейсы На этом наиболее высоком уровне происходит дифференциация, или разделение, выполняемых функций, которые разработчики могут использовать в разных типах приложений. Он содержит классы и элементы управления для создания (классических) приложений
Интерфейсы к ClamAV
Интерфейсы к ClamAV За относительно небольшое время своего развития ClamAV получил достаточное количество интерфейсов и многого другого, упрощающего работу и интеграцию в приложения. Список некоторых из них можно найти в файле README, а в файле clamdoc.pdf дано их краткое описание,
Интерфейсы и протоколы
Интерфейсы и протоколы С описанием интерфейсов и протоколов разработчики Google справляются легко, ведь для этого нужно писать их любимый код. В Google разработали специальный расширяемый язык Protocol Buffer[19] для сериализации структурированных данных. Protobuf — это механизм
Интерфейсы и упаковка
Интерфейсы и упаковка Herb Sutterr объяснил, что "интерфейс" класса (подразумевая, функциональные возможности, обеспечиваемые классом) включает также внешние функции, связанные с классом. Им также показано, что правила области видимости имен в C++ поддерживают эти изменения
5.3 Интерфейсы и Реализации
5.3 Интерфейсы и Реализации Что представляет собой хороший класс? Нечто, имеющее нбольшое и хорошо определенное множество действий. Нечто, что можно рассматривать как «черный ящик», которым манипулируют только посредством этого множества действий. Нечто, чье фатическое
7.3 Альтернативные Интерфейсы
7.3 Альтернативные Интерфейсы После того, как описаны средства языка, которые относяся к производным классам, обсуждение снова может вернуться к стоящим задачам. В классах, которые описываются в этом раздле, основополагающая идея состоит в том, что они однажды нписаны, а
Альтернативные интерфейсы
Альтернативные интерфейсы Стандартный интерфейс операционной системы Windows всегда был для сторонних программистов примером неудачного оформления. Невзрачная цветовая гамма и отсутствие каких-либо визуальных эффектов привели к появлению на рынке программного
50 Интерфейсы разнообразные
50 Интерфейсы разнообразные Разнообразие не только политически корректно. Оно полезно. Оно полезно в командах, способствуя творческому сотрудничеству, а также на рынке, где слово «разнообразие» стало еще одним заклинанием в лексиконе рекламных агентов и представителей.
Интерфейсы будущего
Интерфейсы будущего На выставке SIGGRAPH 2009 публике были представлены несколько устройств, за которыми, возможно, будущее. Наибольший интерес у посетителей выставки вызвала «ощутимая голография» (Touchable Holography) – интерфейс, разработанный коллективом профессора Хироюки