Ver código fonte

aot发布支持

陈国伟 2 anos atrás
pai
commit
bd70867481

+ 4 - 3
FastGithub.Configuration/TypeConverterBinder.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
 using System.Globalization;
 
 namespace FastGithub.Configuration
@@ -18,7 +19,7 @@ namespace FastGithub.Configuration
         /// <typeparam name="T"></typeparam>
         /// <param name="reader"></param>
         /// <param name="writer"></param>
-        public static void Bind<T>(Func<string, T?> reader, Func<T?, string?> writer)
+        public static void Bind<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(Func<string, T?> reader, Func<T?, string?> writer)
         {
             binders[typeof(T)] = new Binder<T>(reader, writer);
 
@@ -37,7 +38,7 @@ namespace FastGithub.Configuration
         }
 
 
-        private class Binder<T> : Binder
+        private class Binder<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T> : Binder
         {
             private readonly Func<string, T?> reader;
             private readonly Func<T?, string?> writer;
@@ -60,7 +61,7 @@ namespace FastGithub.Configuration
         }
 
 
-        private class TypeConverter<T> : TypeConverter
+        private class TypeConverter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T> : TypeConverter
         {
             public override bool CanConvertFrom(ITypeDescriptorContext? context, Type sourceType)
             {

+ 9 - 0
FastGithub.FlowAnalyze/FlowStatisticsContext.cs

@@ -0,0 +1,9 @@
+using System.Text.Json.Serialization;
+
+namespace FastGithub.FlowAnalyze
+{
+    [JsonSerializable(typeof(FlowStatistics))]
+    public partial class FlowStatisticsContext : JsonSerializerContext
+    {
+    }
+}

+ 3 - 3
FastGithub/AppOptions.cs

@@ -3,16 +3,16 @@
     /// <summary>
     /// app选项
     /// </summary>
-    public class AppOptions
+    public record AppOptions
     {
         /// <summary>
         /// 父进程id
         /// </summary>
-        public int ParentProcessId { get; set; }
+        public int ParentProcessId { get; init; }
 
         /// <summary>
         /// udp日志服务器端口
         /// </summary>
-        public int UdpLoggerPort { get; set; }
+        public int UdpLoggerPort { get; init; }
     }
 }

+ 6 - 1
FastGithub/Startup.cs

@@ -9,8 +9,11 @@ using Microsoft.Extensions.Hosting;
 using Serilog;
 using Serilog.Sinks.Network;
 using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
 using System.IO;
 using System.Net;
+using System.Text.Json;
 
 namespace FastGithub
 {
@@ -87,6 +90,7 @@ namespace FastGithub
         /// ÅäÖ÷þÎñ
         /// </summary>
         /// <param name="builder"></param>
+        [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(Dictionary<string, DomainConfig>))]
         public static void ConfigureServices(this WebApplicationBuilder builder)
         {
             var services = builder.Services;
@@ -124,7 +128,8 @@ namespace FastGithub
             app.MapGet("/flowStatistics", context =>
             {
                 var flowStatistics = context.RequestServices.GetRequiredService<IFlowAnalyzer>().GetFlowStatistics();
-                return context.Response.WriteAsJsonAsync(flowStatistics);
+                var json = JsonSerializer.Serialize(flowStatistics, FlowStatisticsContext.Default.FlowStatistics);
+                return context.Response.WriteAsync(json);
             });
         }
     }