Главная » C# » Отделение объектов данных от объектов действия в Visual C# (Sharp)

0

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

[Serializabie]

class MyObject2 {

}

class Doer {

private MyObject2 _object; private int _networkIdentifier;

}

Класс Doer не имеет атрибута сериализации и поэтому не будет сериализирован; но он ссылается на класс Myobject2. Член данных, идентифицирующий сеть, был пемещен из класса MyObject2 в класс Doer. В результате класс MyObject2 не содеит никаких временных элементов и требует минимального внимания со стороны программиста.

ПРИМЕЧАНИЕ

Дл я   простоты,   при  сериализации  я   предпочитаю   разделять   объект ы  данны х  и  обкты   действий,   используя   дл я   этого   член   данных.   Этот   подход   не   так   объектно-

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

Завершение создания пользовательского типа

В   пользовательских  типах  всегда  необходимо  реализовывать  методы  Equals о и GetHashCodeО. Эти два метода используются библиотекой API .NET для сравнивания и манипулирования экземпляров в списке или коллекции. В примере для этой главы было просто случайностью, что список строковых типов правильно выполнил обработку. Если бы TextProcessor использовал тип Ticket, тогда метод Equals () списка, применяемый для обнаружения  повторяющихся дат,  не работал бы должным образом. Стандартные варианты методов Equals () и GetHashCode () не реализованы должным образом. Но это не является недосмотром разработчиков библиотеки API .NET, а скорее констатацией факта, что они не могут знать струуру объекта и обстоятельств, делающих тип уникальным.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии