Click or drag to resize

ConversionCache Class

Singleton that contains the cache of conversion factors used throughout the Quantitative assembly.
Inheritance Hierarchy

Namespace:  InnerDrive.Quantitative
Assembly:  InnerDrive.Quantitative (in InnerDrive.Quantitative.dll) Version: 4.0.7515.0
public class ConversionCache

The ConversionCache type exposes the following members.

Public propertyStatic memberInstance
Gets the running instance of ConversionCache.
Public propertyRegistrations
Returns a read-only copy of the internally-held list of registrations.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodExists
Gets an indication of whether a conversion exists between the Type of Unit in sourceType to targetType.
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetFactor
Gets the factor by which a measurement in one Unit must be multiplied to convert it to another Unit of the same measurement.
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodIsRegistered
Gets an indication of whether a particular Type is registered in the cache.
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodCode exampleRegister
Retrieves the conversion factors from a Unit and adds them to the cache, along with their inverse factors.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Implementors of Unit classes are advised to populate the Conversions list with at least the minimum conversion factors required to use the unit.
This is a typical use of the ConversionCache class (taken from the Area.ConvertTo(Unit) member). Notice that the conversion factors are "lazy-loaded" i.e., the units are not registered with the cache until a conversion actually takes place.
var cache = ConversionCache.Instance;

double factor = 0d;
double converted = double.NaN;

Type sourceType = Unit.GetType();
Type targetType = target.GetType();
if (cache.Exists(sourceType, targetType))
    factor = cache.GetFactor(sourceType, targetType);
    converted = Value * factor;
else if (cache.Exists(sourceType, typeof(MeterSquare)))
    double meterFactor = cache.GetFactor(sourceType, typeof(MeterSquare));
    double meters = this.Value * meterFactor;
    factor = cache.GetFactor(typeof(MeterSquare), targetType);
    converted = meters * factor;

return new Area(converted, target);
See Also