Beispiel #1
0
 public CodeController(ILogger <AconFunction> logger, ISqlSugarClient _dbFactory
                       , DynamicActionProvider actionProvider, DynamicChangeTokenProvider dynamicChangeTokenProvider)
 {
     _logger                     = logger;
     DbFactory                   = _dbFactory;
     _actionProvider             = actionProvider;
     _dynamicChangeTokenProvider = dynamicChangeTokenProvider;
 }
Beispiel #2
0
        public string Delete(string route,

                             [FromServices] ApplicationPartManager manager,
                             [FromServices] DynamicChangeTokenProvider tokenProvider)
        {
            var dataSource              = ((IEndpointRouteBuilder)(Builder.Properties["__EndpointRouteBuilder"])).DataSources;
            EndpointDataSource cache    = null;
            Endpoint           endpoint = null;

            foreach (var items in dataSource)
            {
                foreach (var item in items.Endpoints)
                {
                    if (item.DisplayName.Contains(route))
                    {
                        cache    = items;
                        endpoint = item;
                    }
                }
            }
            if (endpoint != null)
            {
                Endpoints.Remove(cache);
            }
            //Builder.Properties["a"]
            AssemblyPart assembly = null;

            foreach (var items in AssemblyCache)
            {
                var types = items.Assembly.ExportedTypes;
                foreach (var item in types)
                {
                    if (item.Name.Contains(route))
                    {
                        assembly = items;
                    }
                }
            }

            if (assembly != null)
            {
                AssemblyCache.TryDequeue(out assembly);
                assembly.Assembly.DisposeDomain();
                manager.ApplicationParts.Remove(assembly);
                tokenProvider.NotifyChanges();
                return("Succeed!");
            }

            return("No Such Type!");
        }
Beispiel #3
0
 public object AddAction(string source, [FromServices] DynamicActionProvider actionProvider,
                         [FromServices] DynamicChangeTokenProvider tokenProvider)
 {
     try
     {
         //actionProvider.AddControllers(source);
         //tokenProvider.NotifyChanges();
         return(new { isok = true });
     }
     catch (Exception ex)
     {
         return(new { isok = false, err = ex.Message });
     }
 }
Beispiel #4
0
        public string Post(string csharpCode,
                           [FromServices] ApplicationPartManager manager,
                           [FromServices] DynamicChangeTokenProvider tokenProvider)
        {
            string code = HttpUtility.UrlDecode(csharpCode);
            string name = ScriptHelper.GetClassName(code);
            AssemblyCSharpBuilder builder = new AssemblyCSharpBuilder("TestAAA");

            builder.Compiler.Domain = DomainManagement.Create(name);
            builder.Add(code);
            var assembly = new AssemblyPart(builder.GetAssembly());

            AssemblyCache.Enqueue(assembly);
            manager.ApplicationParts.Add(assembly);
            tokenProvider.NotifyChanges();
            return("succeed!");
        }
        public string Post(string csharpCode,
                           [FromServices] ApplicationPartManager manager,
                           [FromServices] DynamicChangeTokenProvider tokenProvider)
        {
            string code = HttpUtility.UrlDecode(csharpCode);
            string name = ScriptHelper.GetClassName(code);
            AssemblyCSharpBuilder builder = new AssemblyCSharpBuilder("TestAAA");

            builder.Compiler.Domain = DomainManagement.Create(name);
            builder.Add(code);
            var assembly     = builder.GetAssembly();
            var assemblyPart = new AssemblyPart(assembly);

            AssemblyCache.Enqueue(assemblyPart);
            //manager.ApplicationParts.Add(assemblyPart);
            IControllerFactoryProvider a;

            var controllerType = assembly.GetTypes().First(item => item.Name == "TestController");

            //AutoFacBuilder.RegisterType(controllerType).AsSelf();
            //var result = _icoContext.Resolve<IApplicationFeatureProvider>();
            manager.ApplicationParts.Add(new AssemblyPart(assembly));
            manager.FeatureProviders.Add(new ControllerFeatureProvider());
            var feature = new ControllerFeature();

            manager.PopulateFeature(feature);

            AutoFacBuilder.RegisterTypes(feature.Controllers.Select(ti => ti.AsType()).ToArray()).PropertiesAutowired();
            tokenProvider.NotifyChanges();

            //AutoFac.RegisterType(assembly.GetTypes().First(item=>item.Name=="TestController")).SingleInstance();
            //icoContext.Resolve(assembly.GetTypes().First(item => item.Name == "TestController"));

            //AutoFacBuilder.RegisterAssemblyModules(assembly);
            //StaticAssemblyProvider

            ////AutoFacBuilder.IfNotRegistered(controllerType);
            //AutoFacBuilder.RegisterType(controllerType).AsSelf().PropertiesAutowired();
            //services.AddControllers().AddControllersAsServices();
            //AutoFacBuilder.RegisterType(controllerType).AsSelf().InstancePerLifetimeScope();
            //_icoContext.ResolveOptional(controllerType);
            //_icoContext.Resolve(controllerType);
            //_icoContext.TryResolve(controllerType, out var provider);

            return(controllerType.ToString());
        }
 public FeaturesController(ApplicationPartManager partManager, DynamicChangeTokenProvider dynamicChangeTokenProvider)
 {
     _partManager = partManager;
     _dynamicChangeTokenProvider = dynamicChangeTokenProvider;
 }
Beispiel #7
0
        private static Task Complies(DynamicActionProvider dynamicActionProvider, List <AConMvcClass> allactios, DynamicChangeTokenProvider tokenProvider)
        {
            Task mytask = Task.Run(() =>
            {
                for (var i = 0; i < allactios.Count; i++)
                {
                    var c = allactios[i];
                    try
                    {
                        dynamicActionProvider.AddControllers(AConMvcCompileClass.ToCompileClass(c));
                        tokenProvider.NotifyChanges();
                        Logger.LogDebug("Complies", $"Complie{c.ClassName} done");
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError("Complies erro ", $"controller :{c.ClassName}, action :{c.ActionCode}", ex);
                    }
                }
            });

            return(mytask);
        }
Beispiel #8
0
        private static async Task HandelBuildAllDynamicActions(DynamicActionProvider dynamicActionProvider, DynamicChangeTokenProvider dynamicChangeToken)
        {
            var allactios = DB.UniClient.Queryable <AConMvcClass>().Where(p => p.IsEanable != null && p.IsEanable == true).ToList();

            await  Complies(dynamicActionProvider, allactios, dynamicChangeToken);
        }
Beispiel #9
0
        public static async Task ClearAllDynamicActions(DynamicActionProvider dynamicActionProvider, DynamicChangeTokenProvider dynamicChangeToken)
        {
            var allactios = DB.UniClient.Queryable <AConMvcClass>().Where(p => p.IsEanable != null && p.IsEanable == true).ToList();

            try
            {
                foreach (var c in allactios)
                {
                    var classes = AConMvcCompileClass.ToCompileClass(c);

                    dynamicActionProvider.RemoveController(classes);
                    dynamicChangeToken.NotifyChanges();
                    Thread.Sleep(20);
                }
            }
            catch
            {
            }
        }
Beispiel #10
0
 public static async Task BuildAllDynamicActions(DynamicActionProvider dynamicActionProvider, DynamicChangeTokenProvider dynamicChangeToken)
 {
     await HandelBuildAllDynamicActions(dynamicActionProvider, dynamicChangeToken);
 }
Beispiel #11
0
 public FactController(ISysDatabaseService codeService, DynamicActionProvider dynamicActionProvider, DynamicChangeTokenProvider dynamicChangeToken)
 {
     m_codeService = codeService;
     //var ss = HttpContext.Session["admin"] ?? "";
     //if( )
 }
Beispiel #12
0
 public GlobalActionFilter(IGodWorker typeMaker, IHttpContextAccessor _accessor, DynamicActionProvider dynamicActionProvider, DynamicChangeTokenProvider dynamicChangeToken)
 {
     TypeMaker                   = typeMaker;
     _actionProvider             = dynamicActionProvider;
     _dynamicChangeTokenProvider = dynamicChangeToken;
 }