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)