Skip to content

Nov1kov/Get-hash-of-data-model

Repository files navigation

Get hash of data model in compile time

XUnit tests

Motivation

Чтобы использовать сериализацию для хранения кеша в приложение. Необходимо поддерживать совместимость между вресиями.

Как это обеспечить:

  • использовать Version tolerant serialization.
  • перезаписывать файл в случае если известно что модель поменялась.

implementation options

Generate C# object

  • Create object by model.
  • Get hashcode of object.

restrictions

  • Each time object creation must be the same.
  • Every implementation of abstraction must be set.

used

  • AutoBogus - object generator by adding auto creation
  • DeepEqual - for test equals of objects

example

objectGenerator = new ObjectGenerator();

// set specific implementations to abstact item         
objectGenerator.AddTypeMap<IItem, ItemImplOne>();
objectGenerator.AddTypeMap<IItem, ItemImplTwo>();

// generate object            
var model = _objectGenerator.Generate<ModelWithAbstraction>();

// serialize to bytes and get hashcode
var hash = objectGenerator.GetHash()); // 177346035

Get hashcode from every field

  • Get hashcode of each object name field.

restrictions

  • none

todo

About

generate object with fields

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages