/// <summary> /// Initializes the unit system with defaults. /// </summary> /// <param name="unitSystemDependencyFactory">The unit system dependency factory.</param> /// <param name="registerUnitAction">The register unit action.</param> /// <returns>A <see cref="UnitSystemDependencies"/>.</returns> public UnitSystemDependencies InitializeUnitSystemWithDefaults( IUnitSystemDependencyFactory unitSystemDependencyFactory = null, Action <IUnitRegistrar> registerUnitAction = null) { return(this.InitializeUnitSystem( unitSystemDependencyFactory, unitRegistrar => { foreach (var unit in UnitDefinitions.GetDefaultPrefixes()) { unitRegistrar.Register(unit); } foreach (var unit in UnitDefinitions.GetDefaultUnits()) { unitRegistrar.Register(unit); } foreach (var derivedUnit in UnitDefinitions.GetDefaultDerivedUnit()) { unitRegistrar.Register(derivedUnit); } registerUnitAction?.Invoke(unitRegistrar); })); }
/// <summary> /// Initializes the unit system. /// </summary> /// <param name="unitSystemDependencyFactory">The unit system dependency factory.</param> /// <param name="registerUnitAction">The register unit action.</param> /// <returns>A <see cref="UnitSystemDependencies"/>.</returns> public UnitSystemDependencies InitializeUnitSystem( IUnitSystemDependencyFactory unitSystemDependencyFactory, Action <IUnitRegistrar> registerUnitAction) { this.LockedAction( () => { if (!this.isInitialized) { unitSystemDependencyFactory = unitSystemDependencyFactory ?? new UnitSystemDependencyFactory( new ExpressionToFlatRepresentationConverter()); this.unitRegistry = unitSystemDependencyFactory.CreateUnitRegistry(); registerUnitAction?.Invoke(this.unitRegistry); this.expressionParser = unitSystemDependencyFactory.CreateParser(this.unitRegistry); this.lexicalAnalyzer = unitSystemDependencyFactory.CreateLexicalAnalyzer(TokenMatching.CompositeUnit); this.unitFactory = unitSystemDependencyFactory.CreateUnitFactory(this.unitRegistry); this.quantityParser = unitSystemDependencyFactory.CreateParser( this.expressionParser, this.unitFactory); this.quantityOperations = unitSystemDependencyFactory.CreateQuantityOperations(this.unitFactory); this.Dependencies = new UnitSystemDependencies( this.unitRegistry, this.lexicalAnalyzer, this.expressionParser, this.quantityParser, this.unitFactory, this.quantityOperations); this.isInitialized = true; } }); return(this.Dependencies); }
/// <summary> /// Initializes this instance. /// </summary> /// <param name="registerUnitAction">The register unit action.</param> /// <param name="unitSystemDependencyFactory">The unit system dependency factory.</param> /// <returns>The <see cref="UnitSystemDependencies"/>.</returns> public static UnitSystemDependencies Initialize( Action <IUnitRegistrar> registerUnitAction, IUnitSystemDependencyFactory unitSystemDependencyFactory = null) { return(Instance.InitializeUnitSystem(unitSystemDependencyFactory, registerUnitAction)); }
/// <summary> /// Initializes the unit system with defaults. /// </summary> public UnitSystemDependencies InitializeUnitSystemWithDefaults( IUnitSystemDependencyFactory unitSystemDependencyFactory = null, Action<IUnitRegistrar> registerUnitAction = null) { return this.InitializeUnitSystem( unitSystemDependencyFactory, unitRegistrar => { foreach (var unit in UnitDefinitions.GetDefaultPrefixes()) { unitRegistrar.Register(unit); } foreach (var unit in UnitDefinitions.GetDefaultUnits()) { unitRegistrar.Register(unit); } foreach (var derivedUnit in UnitDefinitions.GetDefaultDerivedUnit()) { unitRegistrar.Register(derivedUnit); } registerUnitAction?.Invoke(unitRegistrar); }); }
/// <summary> /// Initializes the unit system. /// </summary> /// <param name="unitSystemDependencyFactory">The unit system dependency factory.</param> /// <param name="registerUnitAction">The register unit action.</param> public UnitSystemDependencies InitializeUnitSystem( IUnitSystemDependencyFactory unitSystemDependencyFactory, Action<IUnitRegistrar> registerUnitAction) { this.LockedAction( () => { if (!this.isInitialized) { unitSystemDependencyFactory = unitSystemDependencyFactory ?? new UnitSystemDependencyFactory( new ExpressionToFlatRepresentationConverter()); this.unitRegistry = unitSystemDependencyFactory.CreateUnitRegistry(); registerUnitAction?.Invoke(this.unitRegistry); this.expressionParser = unitSystemDependencyFactory.CreateParser(this.unitRegistry); this.lexicalAnalyzer = unitSystemDependencyFactory.CreateLexicalAnalyzer(TokenMatching.CompositeUnit); this.unitFactory = unitSystemDependencyFactory.CreateUnitFactory(this.unitRegistry); this.quantityParser = unitSystemDependencyFactory.CreateParser( this.expressionParser, this.unitFactory); this.quantityOperations = unitSystemDependencyFactory.CreateQuantityOperations(this.unitFactory); this.Dependencies = new UnitSystemDependencies( this.unitRegistry, this.lexicalAnalyzer, this.expressionParser, this.quantityParser, this.unitFactory, this.quantityOperations); this.isInitialized = true; } }); return this.Dependencies; }
/// <summary> /// Initializes this instance. /// </summary> /// <param name="unitSystemDependencyFactory">The unit system dependency factory.</param> /// <param name="registerUnitAction">The register unit action.</param> public static UnitSystemDependencies Initialize( Action<IUnitRegistrar> registerUnitAction, IUnitSystemDependencyFactory unitSystemDependencyFactory = null) { return Instance.InitializeUnitSystem(unitSystemDependencyFactory, registerUnitAction); }