diff --git a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs index 195175a..ea0ef13 100644 --- a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs +++ b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs @@ -157,6 +157,7 @@ namespace JiShe.CollectBus.IncrementalGenerator code.AppendLine("// "); code.AppendLine("#nullable enable"); code.AppendLine("using System;"); + code.AppendLine("using System.Reflection;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine("using JiShe.CollectBus.Analyzers.Shared;"); code.AppendLine($"namespace {classSymbol.ContainingNamespace.ToDisplayString()};"); @@ -198,7 +199,14 @@ namespace JiShe.CollectBus.IncrementalGenerator //生成当前类属性名称集合 GeneratePropertyListForSourceEntity(propList, code, compilation, classSymbol); - + + //生成当前类属性信息集合 + GeneratePropertyInfoListForSourceEntity( + propList, + code, + compilation, + classSymbol); + //生成当前类属性访问 GetGeneratePropertyValueForSourceEntity( @@ -213,9 +221,7 @@ namespace JiShe.CollectBus.IncrementalGenerator code, compilation, classSymbol); - - - + code.AppendLine("}"); return code.ToString(); } @@ -468,5 +474,42 @@ namespace JiShe.CollectBus.IncrementalGenerator code.AppendLine(" };"); } + + + /// + /// 生成当前类属性信息集合 + /// + /// 属性集合 + /// + /// + /// + private static void GeneratePropertyInfoListForSourceEntity( + IEnumerable propList, + StringBuilder code, + Compilation compilation, + INamedTypeSymbol classSymbol) + { + code.AppendLine(" public List PropertyList {get;} = new List()"); + code.AppendLine(" {"); + List tempPropList = new List(); + foreach (var prop in propList) + { + if (prop.Type is INamedTypeSymbol { IsTupleType: true } tupleType) + { + foreach (var element in tupleType.TupleElements) + { + tempPropList.Add($"\"{prop.Name}.{element.Name}\""); + } + } + else + { + tempPropList.Add($"\"{prop.Name}\""); + } + } + + code.Append(string.Join(",", tempPropList)); + + code.AppendLine(" };"); + } } } \ No newline at end of file diff --git a/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntityAccessor.cs b/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntityAccessor.cs index 9c9c773..e0bedd4 100644 --- a/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntityAccessor.cs +++ b/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntityAccessor.cs @@ -21,7 +21,7 @@ public sealed class TableModelSingleMeasuringEntityAccessor3 : ISourceEntityA public static void SetDeviceId(JiShe.CollectBus.IoTDB.Model.IoTEntity obj, string value) => obj.DeviceId = value; public static long GetTimestamps(JiShe.CollectBus.IoTDB.Model.IoTEntity obj) => obj.Timestamps; public static void SetTimestamps(JiShe.CollectBus.IoTDB.Model.IoTEntity obj, long value) => obj.Timestamps = value; - public List PropertyList { get; } = new List() + public List PropertyNameList { get; } = new List() { "SingleColumn.Item1","SingleColumn.Item2","SystemName","ProjectId","DeviceType","DeviceId","Timestamps" }; public object GetPropertyValue(JiShe.CollectBus.IoTDB.Model.TableModelSingleMeasuringEntity targetEntity, string propertyName) diff --git a/shared/JiShe.CollectBus.Analyzers.Shared/ISourceEntityAccessor.cs b/shared/JiShe.CollectBus.Analyzers.Shared/ISourceEntityAccessor.cs index baff180..5e67826 100644 --- a/shared/JiShe.CollectBus.Analyzers.Shared/ISourceEntityAccessor.cs +++ b/shared/JiShe.CollectBus.Analyzers.Shared/ISourceEntityAccessor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Reflection; using System.Text; namespace JiShe.CollectBus.Analyzers.Shared @@ -25,6 +26,11 @@ namespace JiShe.CollectBus.Analyzers.Shared /// /// 属性名称集合 /// - List PropertyList { get; } + List PropertyNameList { get; } + + /// + /// 属性信息集合 + /// + List PropertyInfoList { get; } } }