Core - Refactor service registration

This commit is contained in:
Robert committed 2023-02-04 23:25:48 +01:00
1 parent a1086df41a
commit f2ef657d00
18 files changed
+234 -231

No files matched your search

@@ -0,0 +1,40 @@
using DryIoc;
using Microsoft.Extensions.ObjectPool;
using NoStringEvaluating;
using NoStringEvaluating.Contract;
using NoStringEvaluating.Models.Values;
using NoStringEvaluating.Services.Cache;
using NoStringEvaluating.Services.Checking;
using NoStringEvaluating.Services.Parsing;
using NoStringEvaluating.Services.Parsing.NodeReaders;
namespace Artemis.VisualScripting.DryIoc;
/// <summary>
/// Provides an extension method to register services onto a DryIoc <see cref="IContainer"/>.
/// </summary>
public static class UIContainerExtensions
{
/// <summary>
/// Registers NoStringEvaluating services into the container.
/// </summary>
/// <param name="container">The builder building the current container</param>
public static void RegisterNoStringEvaluating(this IContainer container)
{
// Pooling
container.RegisterInstance(ObjectPool.Create<Stack<InternalEvaluatorValue>>());
container.RegisterInstance(ObjectPool.Create<List<InternalEvaluatorValue>>());
container.RegisterInstance(ObjectPool.Create<ExtraTypeIdContainer>());
// Parser
container.Register<IFormulaCache, FormulaCache>(Reuse.Singleton);
container.Register<IFunctionReader, FunctionReader>(Reuse.Singleton);
container.Register<IFormulaParser, FormulaParser>(Reuse.Singleton);
// Checker
container.Register<IFormulaChecker, FormulaChecker>(Reuse.Singleton);
// Evaluator
container.Register<INoStringEvaluator, NoStringEvaluator>(Reuse.Singleton);
}
}
@@ -1,35 +0,0 @@
using Artemis.Core.DryIoc;
using DryIoc;
using Microsoft.Extensions.ObjectPool;
using NoStringEvaluating;
using NoStringEvaluating.Contract;
using NoStringEvaluating.Models.Values;
using NoStringEvaluating.Services.Cache;
using NoStringEvaluating.Services.Checking;
using NoStringEvaluating.Services.Parsing;
using NoStringEvaluating.Services.Parsing.NodeReaders;
namespace Artemis.VisualScripting.DryIoc;
public class NoStringDryIocModule : IModule
{
/// <inheritdoc />
public void Load(IRegistrator builder)
{
// Pooling
builder.RegisterInstance(ObjectPool.Create<Stack<InternalEvaluatorValue>>());
builder.RegisterInstance(ObjectPool.Create<List<InternalEvaluatorValue>>());
builder.RegisterInstance(ObjectPool.Create<ExtraTypeIdContainer>());
// Parser
builder.Register<IFormulaCache, FormulaCache>(Reuse.Singleton);
builder.Register<IFunctionReader, FunctionReader>(Reuse.Singleton);
builder.Register<IFormulaParser, FormulaParser>(Reuse.Singleton);
// Checker
builder.Register<IFormulaChecker, FormulaChecker>(Reuse.Singleton);
// Evaluator
builder.Register<INoStringEvaluator, NoStringEvaluator>(Reuse.Singleton);
}
}