解决IoTDB驱动单测点数据模型元组可空类型元素映射失败的问题。

This commit is contained in:
ChenYi 2025-05-16 09:22:54 +08:00
parent 6d95430b63
commit d87f7a2c41

View File

@ -580,7 +580,7 @@ namespace JiShe.CollectBus.IncrementalGenerator
$"new EntityMemberInfo(" +
$"\"{prop.Name}.{elementName}\", " +
$"typeof({elementType}), " +
$"typeof({elementType}).Name, " +//$"\"{elementDeclaredName}\", " +
$"GetValueTupleElementName(typeof({elementType})), " +//$"\"{elementDeclaredName}\", " +
$"(e) => Get{prop.Name}_{elementName}(({entityType})e), " +
$"(e, v) => Set{prop.Name}_{elementName}(({entityType})e, ({elementType})v))");
}
@ -589,6 +589,30 @@ namespace JiShe.CollectBus.IncrementalGenerator
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;
}
""";
}