KerbalData Namespace KerbalData - KSP Data Unlocked!
Top level namespace for Consumer API classes. Classes under this namespace are meant to be consumed by end developers. Provides all the core classes neccassary for loading individual files or wiring in a repoistory loading pattern with automatic save/backup capibilities.
Classes

  Class Description
Public class KerbalData
Top level consumer API class used for accessing and loading KSP data.
Public class KerbalDataException
Base Exception used any time an error with the underlying cache API is surfaced.
Public class KerbalDataExtension
Extensions used and provided by KebralData
Public class KerbalDataManager
Recommended base to use when developing custom Data manager instances like KerbalData, provides key base functionality.
Public class KerbalDataObject
Base implementation for consumer data model. Provides wire up override for base dictionary. Used for storing properties that have not been mapped.
Public class KspData
Single file loading helper method class. Can be used to load/save and convert individual data items/files
Remarks

This permanent helper class is also consumed by the and may be used by other file system based repositories.

Examples

Multiple methods in this class have parameters for either a configuration section name to automatically configure a ProcessorRegistry for use in serialization. The other accepts an instance of KspProcessor T  to use for serialization

<configuration> 
  <configSections> 
    <section name="kerbalData" type="KerbalData.Configuration.ApiConfig, KerbalData"/> 
  </configSections> 
  <kerbalData> 
    <processors> 
      <processor index="0"> 
        <serializer type="KerbalData.Serialization.Serializers.V018x.DataSerializer, KerbalData"/> 
        <converter type="KerbalData.Serialization.Serializers.V018x.JsonModelConverter`1, KerbalData"/> 
      </processor> 
      <processor index="1" modelType="Newtonsoft.Json.Linq.JObject, Newtonsoft.Json"> 
        <serializer type="KerbalData.Serialization.Serializers.V018x.DataSerializer, KerbalData"/> 
        <converter type="KerbalData.Serialization.Serializers.V018x.JsonObjectConverter`1, KerbalData"/> 
      </processor> 
    </processors> 
  </kerbalData> 
</configuration>
Public class KspDataContext
Model object provided to de-serializer/serilaizer classes for defining the basic structure of the KSP data prior to conversion to JSON
Public class KspDataField
Model class used by KspDataObject as a key component in data serilaization/de-serialization.
Public class KspDataObject
Core data context object used for data serilization/de-serilaization. Only implementation build on IKspDataConverter or IKspFileConverter
Public class ObservableDictionary TKey, TValue 
Protected class ObservableDictionary TKey, TValue  KeyedDictionaryEntryCollection TKey 
Public class ProcessorRegistry
The registry is used to retrieve/create the correct type of processor for the desired model and underlying data
Public class RepoFactory
Public class StorableItemMetadata T 
Meta-data wrapper for storable data. Used for lazy loading.
Public class StorableObject
Public class StorableObjects T 
Maintains the top level collection of Kerbal data objects. Works similar to a dictionary however it does not implement IDictionary in order to restrict usage. It is important to note that unlike an IDictionary implementation this class will accept a call to the Add method even if another value with the same name already exists. The previous value will be overwritten by the latest addition to the list.
Public class UnMappedPropertiesConverter T 
JSON.NET implementation class for de-serializing to classes while storing unmapped properties to the the IKerbalDataObject implmentation.
Structures

  Structure Description
Public structure ObservableDictionary TKey, TValue  Enumerator TKey, TValue 
Interfaces

  Interface Description
Public interface IKerbalDataManager
Base interface for top-level consumer API classes. Allows consumers to create custom models that leverage API features.
Public interface IKerbalDataObject
Base data object. Included dictionary requirement to provide storage for root level values not mapped to strongly typed properties.
Public interface IKerbalDataRepo T 
Requirements for data loading repository. Additional implementations may be provided to store/load KSP data from any desired store.
Public interface IStorable
Represents a data element that can be saved as a unit.
Public interface IStorableObjects
Base contract for a class that can manage multiple IStorable instances includes requirements to provide end-user methods