コード例 #1
0
        /// <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);
            }));
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 /// <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));
 }
コード例 #4
0
        /// <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);
                    });
        }
コード例 #5
0
        /// <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;
        }
コード例 #6
0
 /// <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);
 }