Avalanche.Accessor
Accessor introduces records of IWriterBase writers that are used for accessing different types of data. Accessors unify class and struct access, serializers, printer-parsers under same set of interfaces.
IAccessorBase ├── IRecordAccessor ├── IFieldAccessor ├── IListAccessor └── IMapAccessor
IRecordAccessor contains record and field accessing writers.
// Create accessor
IRecordAccessor<MyClass> accessor = AccessorServices.Instance.GetRecordAccessor<MyClass>();
// Create record
MyClass myClass = accessor.DefaultConstructor.Read();
// Write field
accessor.Fields.GetByName("Id").Writer.WriteAs(4, myClass);
// Deconstruct record
(int, string) values = accessor.Deconstructor.ReadAs<MyClass, (int, string)>(myClass);
IListAccessor contains list and element accessing writers.
// Create accessor
IListAccessor<List<int>, int> accessor = (IListAccessor<List<int>, int>)AccessorServices.Instance.GetListAccessor<List<int>>();
// Create list
List<int> list = accessor.Constructor.Read(new int[] { 1, 2, 3 });
// Read element
int value = accessor.Get.Read((list, 0));
Class libraries:
- Avalanche.Accessor.dll contains implementations.
- Avalanche.Accessor.Abstractions.dll contains interfaces.