Browse Source

新增LiveConsultationService

Felix 2 years ago
parent
commit
212d8aced9
3 changed files with 29 additions and 1 deletions
  1. 8 1
      CodeGenerator.cs
  2. 21 0
      ModeTypeGenerator.cs
  3. BIN
      WingInterfaceLibrary.dll

+ 8 - 1
CodeGenerator.cs

@@ -52,7 +52,14 @@ namespace FlutterCodeGenerator
             }
             var assemblybytes = File.ReadAllBytes(dll);
             var assembly = Assembly.Load(assemblybytes);
-            var interfaceTypes = assembly.GetTypes().Where(x => x.FullName.Contains(".Interface.") && x.Name.Contains("Service") && !x.Name.Contains("DBService") && !x.Name.Contains("Management") && !x.Name.Contains("Notification")).ToList();
+            var allTypes= assembly.GetTypes();
+            var liveConsultationService = allTypes.FirstOrDefault(x => x.FullName.Contains(".LiveConsultation") && x.Name.EndsWith("Service"));
+            if (liveConsultationService == null)
+            {
+                throw new Exception("Live Consultation Service Load Failed.");
+            }
+            var interfaceTypes = allTypes.Where(x => x.FullName.Contains(".Interface.") && x.Name.EndsWith("Service") && !x.Name.EndsWith("DBService") && !x.Name.EndsWith("ManagementService") && !x.Name.EndsWith("NotificationService")).ToList();
+            interfaceTypes.Add(liveConsultationService);
             foreach (var interfaceType in interfaceTypes)
             {
                 var sericeName = interfaceType.Name[1..];

+ 21 - 0
ModeTypeGenerator.cs

@@ -112,6 +112,27 @@ namespace FlutterCodeGenerator
                     else if (type.Name == "Nullable`1")
                     {
                         var modelType = new EnumNullableModelType(type.GetGenericArguments()[0], argName);
+                        if (!CodeGenerator.ConflictModelTypeList.ContainsKey(modelType.ParameterType.Name))
+                        {
+                            CodeGenerator.ConflictModelTypeList[modelType.ParameterType.Name] = new Dictionary<ModelType, int>() { { modelType, 1 } };
+                        }
+                        else
+                        {
+                            if (!CodeGenerator.ConflictModelTypeList[modelType.ParameterType.Name].Any(x => x.Key.ParameterType.Namespace == modelType.ParameterType.Namespace))
+                            {
+                                var index = CodeGenerator.ConflictModelTypeList[modelType.ParameterType.Name].Count() + 1;
+                                modelType.Index = index;
+                                CodeGenerator.ConflictModelTypeList[modelType.ParameterType.Name][modelType] = index;
+                            }
+                            else
+                            {
+                                modelType.Index = CodeGenerator.ConflictModelTypeList[modelType.ParameterType.Name].FirstOrDefault(x => x.Key.ParameterType.Namespace == modelType.ParameterType.Namespace).Value;
+                            }
+                        }
+                        if (!ServiceMap.TemporaryList.Any(x => x.ParameterType == type))
+                        {
+                            ServiceMap.TemporaryList.Add(modelType);
+                        }
                         return modelType;
                     }
                     else

BIN
WingInterfaceLibrary.dll