From d87f7a2c414436e18bc32fbd5c0876981524640c Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Fri, 16 May 2025 09:22:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3IoTDB=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E5=8D=95=E6=B5=8B=E7=82=B9=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=85=83=E7=BB=84=E5=8F=AF=E7=A9=BA=E7=B1=BB=E5=9E=8B=E5=85=83?= =?UTF-8?q?=E7=B4=A0=E6=98=A0=E5=B0=84=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ComplexTypeSourceAnalyzers.cs | 48 ++++++++++++++----- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs index 9212cda..925212e 100644 --- a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs +++ b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs @@ -577,19 +577,43 @@ namespace JiShe.CollectBus.IncrementalGenerator var elementDeclaredName = element.Type.Name;//元组元素类型名称 initializerLines.Add( - $"new EntityMemberInfo(" + - $"\"{prop.Name}.{elementName}\", " + - $"typeof({elementType}), " + - $"typeof({elementType}).Name, " +//$"\"{elementDeclaredName}\", " + - $"(e) => Get{prop.Name}_{elementName}(({entityType})e), " + - $"(e, v) => Set{prop.Name}_{elementName}(({entityType})e, ({elementType})v))"); - } - } - } + $"new EntityMemberInfo(" + + $"\"{prop.Name}.{elementName}\", " + + $"typeof({elementType}), " + + $"GetValueTupleElementName(typeof({elementType})), " +//$"\"{elementDeclaredName}\", " + + $"(e) => Get{prop.Name}_{elementName}(({entityType})e), " + + $"(e, v) => Set{prop.Name}_{elementName}(({entityType})e, ({elementType})v))"); + } + } + } - code.AppendLine(string.Join(",\n", initializerLines)); - code.AppendLine(" };"); - } + code.AppendLine(string.Join(",\n", initializerLines)); + code.AppendLine(" };"); + + code.AppendLine(GetValueTupleElementName()); + } + + private static string GetValueTupleElementName() + { + return """ + public static string GetValueTupleElementName(Type declaredType) + { + string typeName; + // 处理可空类型 + if (declaredType.IsGenericType && declaredType.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + Type underlyingType = Nullable.GetUnderlyingType(declaredType); + typeName = underlyingType.Name; + } + else + { + typeName = declaredType.Name; + } + + return typeName; + } + """; + } private static string GenerateAttributeInitializer(AttributeData attribute)