| | |
| | | public static class ResourceUtils |
| | | { |
| | | /// <summary> |
| | | /// 发送HTTP请求 |
| | | /// </summary> |
| | | /// <typeparam name="TRequest"></typeparam> |
| | | /// <typeparam name="TResponse"></typeparam> |
| | | /// <param name="request"></param> |
| | | /// <param name="provider"></param> |
| | | /// <returns></returns> |
| | | public static Task<TResponse> SendHttpAsync<TRequest, TResponse>( |
| | | TRequest request, |
| | | IResourceHttpProvider provider = null) |
| | | where TRequest : class, new() |
| | | { |
| | | return App.GetRequiredService<ResourceHttpUtils>().SendHttpAsync<TRequest, TResponse>(request, provider); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成动态控制器 |
| | | /// </summary> |
| | | public static async Task BuildDynamicControllersAsync() |
| | |
| | | var expiredResources = resources.Where(it => !models.Any(m => m.Route == it.Route && m.Method == it.Method)).ToList(); |
| | | foreach (var expiredResource in expiredResources) |
| | | { |
| | | //expiredResource.IsExpired = true; |
| | | //await rep.UpdateAsync(expiredResource); |
| | | resources.Remove(expiredResource); |
| | | await rep.DeleteAsync(expiredResource); |
| | | } |
| | | |
| | |
| | | code += $@" |
| | | [AllowAnonymous]"; |
| | | } |
| | | var result = resource.ResponseTypeName.IsNull() ? "Task" : $"Task<{resource.ResponseTypeName}>"; |
| | | code += $@" |
| | | [Http{resource.Method}] |
| | | public Task<{resource.ResponseTypeName}> {resource.ActionName}({resource.RequestTypeName} request) |
| | | public {result} {resource.ActionName}({resource.RequestTypeName} request) |
| | | {{ |
| | | return mediator.Send(request); |
| | | }} |
| | |
| | | }} |
| | | }} |
| | | "; |
| | | var dynamicAssembly = App.CompileCSharpClassCode(code); |
| | | provider.AddAssembliesWithNotifyChanges(dynamicAssembly); |
| | | var dynamicAssemblyName = dynamicAssembly.GetName().Name; |
| | | resource.DynamicAssemblyName = dynamicAssemblyName; |
| | | try |
| | | { |
| | | var dynamicAssembly = App.CompileCSharpClassCode(code); |
| | | provider.AddAssembliesWithNotifyChanges(dynamicAssembly); |
| | | var dynamicAssemblyName = dynamicAssembly.GetName().Name; |
| | | resource.DynamicAssemblyName = dynamicAssemblyName; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(code); |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | } |