public override void Load() { // Pooling Bind <ObjectPool <Stack <InternalEvaluatorValue> > >() .ToConstant(ObjectPool.Create <Stack <InternalEvaluatorValue> >()) .InSingletonScope(); Bind <ObjectPool <List <InternalEvaluatorValue> > >() .ToConstant(ObjectPool.Create <List <InternalEvaluatorValue> >()) .InSingletonScope(); Bind <ObjectPool <ExtraTypeIdContainer> >() .ToConstant(ObjectPool.Create <ExtraTypeIdContainer>()) .InSingletonScope(); // Parser Bind <IFormulaCache>().To <FormulaCache>().InSingletonScope(); Bind <IFunctionReader>().To <FunctionReader>().InSingletonScope(); Bind <IFormulaParser>().To <FormulaParser>().InSingletonScope(); // Checker Bind <IFormulaChecker>().To <FormulaChecker>().InSingletonScope(); // Evaluator Bind <INoStringEvaluator>().To <NoStringEvaluator>().InSingletonScope(); // Options NoStringEvaluatorOptions opt = new NoStringEvaluatorOptions().SetWordQuotationMark("!"); opt.UpdateConstants(); // If needed InjectUserDefinedFunctions(); }
/// <summary> /// Add NoString math evaluator /// </summary> public static IServiceCollection AddNoStringEvaluator(this IServiceCollection services, Action <NoStringEvaluatorOptions> options = null) { // Pooling services.TryAddSingleton(ObjectPool.Create <Stack <InternalEvaluatorValue> >()); services.TryAddSingleton(ObjectPool.Create <List <InternalEvaluatorValue> >()); services.TryAddSingleton(ObjectPool.Create <ExtraTypeIdContainer>()); // Parser services.TryAddSingleton <IFormulaCache, FormulaCache>(); services.TryAddSingleton <IFunctionReader, FunctionReader>(); services.TryAddSingleton <IFormulaParser, FormulaParser>(); // Checker services.TryAddSingleton <IFormulaChecker, FormulaChecker>(); // Evaluator services.TryAddSingleton <INoStringEvaluator, NoStringEvaluator>(); // Update constants if (options != null) { var opt = new NoStringEvaluatorOptions(); options(opt); opt.UpdateConstants(); } return(services); }