/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
v2.0.0
src/ScriptEngine/Hosting/EngineBuilderExtensions.cs
105 строк
4 KB
EvilBeaver
Удален устаревший метод OnAttach и массово исправлены неиспользуемые using
02 дек 2025, 11:20
02 дек 2025, 11:20
0301fed
Код
Авторство
О чём код?
/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System; using System.Diagnostics.CodeAnalysis; using OneScript.Compilation; using OneScript.Contexts; using OneScript.DependencyInjection; using OneScript.Exceptions; using OneScript.Execution; using OneScript.Language; using OneScript.Language.SyntaxAnalysis; using OneScript.Types; using ScriptEngine.Machine; using ScriptEngine.Machine.Debugger; using ScriptEngine.Machine.Interfaces; namespace ScriptEngine.Hosting { public static class EngineBuilderExtensions { /// <summary> /// Используется для замены DI системы, например в ASP.NET /// </summary> /// <param name="b"></param> /// <param name="ioc"></param> /// <returns></returns> public static IEngineBuilder WithServices(this IEngineBuilder b, IServiceDefinitions ioc) { b.Services = ioc; return b; } public static IEngineBuilder SetupEnvironment(this IEngineBuilder b, Action<ExecutionContext> action) { b.EnvironmentProviders.Add(action); return b; } [SuppressMessage("ReSharper", "RedundantTypeArgumentsOfMethod")] public static IEngineBuilder SetDefaultOptions(this IEngineBuilder builder) { var services = builder.Services; services.Register<IServiceContainer>(sp => sp); services.RegisterSingleton<ITypeManager, DefaultTypeManager>(); services.RegisterSingleton<IGlobalsManager, GlobalInstancesManager>(); services.RegisterSingleton<RuntimeEnvironment>(); services.RegisterSingleton<IRuntimeEnvironment>(sp => sp.Resolve<RuntimeEnvironment>()); services.RegisterSingleton<TypeSymbolsProviderFactory>(); services.RegisterSingleton<IErrorSink>(svc => new ThrowingErrorSink(CompilerException.FromCodeError)); services.RegisterSingleton<IExceptionInfoFactory, ExceptionInfoFactory>(); services.RegisterSingleton<IBslProcessFactory, BslProcessFactory>(); services.RegisterSingleton<IDebugger, DisabledDebugger>(); services.RegisterScoped<StackMachineProvider>(); services.Register<IDependencyResolver, NullDependencyResolver>(); services.RegisterEnumerable<IExecutorProvider, StackMachineExecutor>(); services.RegisterEnumerable<IDirectiveHandler, ConditionalDirectiveHandler>(); services.RegisterEnumerable<IDirectiveHandler, RegionDirectiveHandler>(); services.Register<ExecutionContext>(); services.EnablePredefinedIterables(); services.Register<PreprocessorHandlers>(sp => { var providers = sp.ResolveEnumerable<IDirectiveHandler>(); return new PreprocessorHandlers(providers); }); services.Register<KeyValueConfig>(sp => { var providers = sp.Resolve<ConfigurationProviders>(); return providers.CreateConfig(); }); services.Register<ScriptingEngine>(); return builder; } public static IEngineBuilder UseImports(this IEngineBuilder b) { b.Services.UseImports(); return b; } public static IEngineBuilder WithDebugger(this IEngineBuilder b, IDebugger debugger) { b.Services.RegisterSingleton(debugger); return b; } public static IEngineBuilder SetupServices(this IEngineBuilder b, Action<IServiceDefinitions> setup) { setup(b.Services); return b; } } }