Namespace Eco.Core.Serialization.Migrations
Classes
AggregateMigration
Migration which aggregates multiple migrations into one. Migrations applied after each other for every compatible type.
AggregateMigrationExtensions
ArrayEntriesMigration
Array migration which applies migration to every element and modifies collection schema type if required. May be supplied with optional filter for migrated entries.
ClassMigrationBase
ClassMigrationExtensions
ClassRemoveMigration
Migration for a removed class which allows to invoke Eco.Core.Serialization.Migrations.ClassRemoveMigration.onRemove callback for removed instances members data.
ClassRenameMigration
ClassToFieldMigration
ClassToValueMigration<TValue>
CollectionEntriesMigration
Abstract collection migration (i.e. array or list).
ConcreteTypeMigration
Migration from base type to multiple concrete types based on object's field values. If you need to migrate only by single field you can use simplified ConcreteTypeMigration<TDiscriminator>.
ConcreteTypeMigration<TDiscriminator>
Migration from base type to multiple concrete types by single (discriminator) field value.
ConvertToReferenceMigration
DataMigration
Data migration class performs data level modifications (change member type, migrate member, update member, rename member, delete member etc).
DictionaryDataMigration
Migration for both key and value. Original key and value may be accessed with KeyInput and ValueInput. It let you manipulate with Dictionary data at binary level similar way as DataMigration works. With data inputs for key and value you can access serialized data in binary form and use it for key and value generation. Migration itself doesn't define default modifications, but instead modifications should be added with methods like AddKeyTransform(Func<IDictionary<IDataInput, ReaderDataInput>, ReaderDataInput>).
DictionaryExtendMigration
Migration extending dictionary with new items. Items should be generated with provided function.
DictionaryKeyMigration<TOldKey, TNewKey>
Migrates all dictionary keys to new key values using Eco.Core.Serialization.Migrations.DictionaryKeyMigration`2.converter.
DummyMigration
This migration may be used if you don't actually want to do any migration logic, but want to include this type in migration chain (to process attributes etc).
EnumerableEntriesMigration
Enumerable collection migration which applies migration to every element and modifies collection schema type if required. May be supplied with optional filter for migrated entries.
ImmutableSerializerSchema
InstanceMigration
Base class for instance migrations. This kind of migration doesn't care about class headers, but only migrates instance content (fields, properties etc). ClassMigrationBase takes are about nullability flags and other meta info. It also constructs serialized header from output schema.
KeyToReferenceMigration<TKey, TReference>
Migrates a key to reference which have to be resolved by the key using Eco.Core.Serialization.Migrations.KeyToReferenceMigration`2.referenceResolver.
MappedReferenceMigration<T>
Migration for mapping from reference ID to object with Eco.Core.Serialization.Migrations.MappedReferenceMigration`1.mapper instead of standard reference resolve logic.
MemberRenameMigration
MemberTypeChangeMigration
MigrationCollection
Collection of migrations. Unlike AggregateMigration these migrations are unordered and may be applied independently.
MigrationContext
MigrationException
MigrationManager
Class responsible for migration stuff. It holds migrations, migration types for different versions and can apply them.
MigrationType
Contains information about new type added during migration. Without this info it won't be possible to encode the type.
ObjectInstanceMigration<TSrc, TDst>
Used to migrate object instance of compatible type (specified in constructor) to instance of same or another type. It may not produce null value as result and also may not produce value type. May be used as root level migration.
ObjectMigration<TSrc, TDst>
Used to migrate object instance to other object instance. It may not be used as auto root-level migration, but can be used explicitly as member migration or collection entry migration. It allows to migrate object to null or to value type (opposite to ObjectInstanceMigration<TSrc, TDst>).
ReferenceCollectionToDictionaryMigration
Used to migrate a collection of references into a dictionary, with ID as key ('null' entries are skipped).
SchemaUtils
ValueToClassMigration
Migrates value to class with one of it's field filled with the value. Useful when required migration from value to class wrapping the value and extending it with additional info.
ValueToCollectionMigration
Migrates value to collection with single element. Useful when required migration from former one element to collection of such elements.
Interfaces
IClassMigration
Base interface for all class migrations. Shouldn't be used directly, instead use IInstanceMigration or IReferenceMigration or both.
IDataStoreMigration
IInstanceMigration
IMigration
Base migration class.
IPostLoadMigration
Migration which performs some actions OnPostLoad(). Call to OnPostLoad() adds to PostLoadMethods if migration version higher than save version.
IReferenceMigration
Interface for object References migrations. I.e. for ClassRenameMigration you need it to change reference type.
ITypeMigration
Migration may implement the interface if it supports type migration (i.e. when type renamed).