OSK.Storage.Local.DefaultConfiguration.Polymorphism 1.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package OSK.Storage.Local.DefaultConfiguration.Polymorphism --version 1.1.1                
NuGet\Install-Package OSK.Storage.Local.DefaultConfiguration.Polymorphism -Version 1.1.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OSK.Storage.Local.DefaultConfiguration.Polymorphism" Version="1.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OSK.Storage.Local.DefaultConfiguration.Polymorphism --version 1.1.1                
#r "nuget: OSK.Storage.Local.DefaultConfiguration.Polymorphism, 1.1.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install OSK.Storage.Local.DefaultConfiguration.Polymorphism as a Cake Addin
#addin nuget:?package=OSK.Storage.Local.DefaultConfiguration.Polymorphism&version=1.1.1

// Install OSK.Storage.Local.DefaultConfiguration.Polymorphism as a Cake Tool
#tool nuget:?package=OSK.Storage.Local.DefaultConfiguration.Polymorphism&version=1.1.1                

OSK.Storage.Local

The projects are meant to provide a quick and useful way of saving and handling a variety of files via dependency injection. Through the various serializers, data can be saved using JSON, YAML, binary, or any other format that integrates with the ISerializer interface. This project focuses on storage to a local device and does not interact with cloud technologies. Additionally, through the use of dependency injection, various data manipulations, polymorphism, and other features can be added as needed for consumers.

Local

This is the core logic of the project. It adds all the necessary services using the AddLocalStorage extension.

The process for saving a file flows in the following:

  • Caller calls the ILocalStorageService to save some data, using a set of save options
  • Data is validated and then converted using one of the ISerializer objects within the dependency container
  • After the data is converted into raw data from a serializer, the data is then processed through a list of IRawDataProcessor objects. These can manipulate the data further to allow for compression, encryption, etc.

The process for loadingn a file flows in the following:

  • Call calls the ILocalStorageService to load some data
  • Data is pulled from the location passed and ran through the list of IRawDataProcessor objects to reverse the data manipulations performed during saving.
  • Data is then passed into the serializer to be converted into a useful object

Snappier

Since data size can become an issue, snappier is a useful tool that helps to compress data quickly and efficiently in C#. You view more information and the library here https://github.com/brantburnett/Snappier This project provides an integration to the ILocalStorageService to using this compression algorithm. By using the AddLocalStorageSnappierCompression extension, an IRawDataProcessor will be added to the dependency contaioner to be used during the local data manipulation processes prior to storage.

Cryptography

For security needs, a cryptography integration exists that utilizes the OSK.Security.Cryptography codebase. By using the AddLocalStorageCryptography extension, the ILocalStorageService will gain access to a cryptographic data processor that handle encryption and decryption of data, using any of the integrations for the cryptoraphic library. In order to fully utilize this extension, consumers will need to create an implementation for the ICryptographicKeyRepository and add it to the dependency container. This is used to retrieve the necessary key information for the application to encrypt local data.

Default Local Configuration

For consumers simply wanting access to a local storage service capable of handling binary, json, and yaml, without wanting to perform custom dependency setups, this project provides a quick convenience method to add an implementation for these serializers for you, but it does add dependencies to the OSK serializers implementations, which is why the project is separated so consumers can decide to add those dependencies or not. By calling AddLocalStorageDefaultSerializers, consumers will be able to setup the entirety of a ILocalStorageService dependency tree using the default configuration in the project.

Default Polymorphism Configuration

In the even local storage is handling abstraction and other generic data, polymorhpism will be necessary in order to fully deserialized the objects into the correct types. This project provides a default setup with the OSK.Serialization.Polymorphism codebase and will setup an Enum based polymorphism strategy (see https://github.com/OpenSourceKingdom/OSK.Serialization.Polymorphism.Discriminators). To use this feature, consumers will want to use the AddLocalStorageDefaultPolymorphism extension and provide an assembly type marker

Contributions and Issues

Any and all contributions are appreciated! Please be sure to follow the branch naming convention OSK-{issue number}-{deliminated}-{branch}-{name} as current workflows rely on it for automatic issue closure. Please submit issues for discussion and tracking using the github issue tracker.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.4 88 12/14/2024
1.1.3 73 12/12/2024
1.1.2 85 12/11/2024
1.1.1 77 12/2/2024
1.1.0 72 12/2/2024
1.0.1 139 4/2/2024
1.0.0 123 3/30/2024