fix(core): Fixes various issues with codegen (#646)
- [X] Fixes bad `ReadEnum` by size - [X] Fixes array, list, and set not handling null values properly. - It will be up to the user (for now) to null out empty lists using `[AfterDeserialization]`. Convenience may be added later. - [X] Fixes errors with `dotnet clean` and non-empty generation folder - [X] Fixes bad field indexes on `Account.cs` causing `tags` to not be serialized/deserialized. - This was caused by a duplicate entry. Don't have protection against this _yet_.
This commit is contained in:
parent
75db56edc4
commit
eb4e3ac070
8 changed files with 47 additions and 21 deletions
|
|
@ -116,9 +116,13 @@ namespace SerializableMigration
|
|||
var propertyName = property.Name;
|
||||
var propertyVarPrefix = $"{char.ToLower(propertyName[0])}{propertyName.Substring(1, propertyName.Length - 1)}";
|
||||
var propertyEntry = $"{propertyVarPrefix}Entry";
|
||||
source.AppendLine($"{indent}writer.Write({property.Name}.Count);");
|
||||
source.AppendLine($"{indent}foreach (var {propertyEntry} in {property.Name});");
|
||||
var propertyCount = $"{propertyVarPrefix}Count";
|
||||
source.AppendLine($"{indent}var {propertyCount} = {property.Name}?.Count ?? 0;");
|
||||
source.AppendLine($"{indent}writer.Write({propertyCount});");
|
||||
source.AppendLine($"{indent}if ({propertyCount} > 0)");
|
||||
source.AppendLine($"{indent}{{");
|
||||
source.AppendLine($"{indent} foreach (var {propertyEntry} in {property.Name}!)");
|
||||
source.AppendLine($"{indent} {{");
|
||||
|
||||
var serializableSetElement = new SerializableProperty
|
||||
{
|
||||
|
|
@ -128,8 +132,9 @@ namespace SerializableMigration
|
|||
RuleArguments = setElementRuleArguments
|
||||
};
|
||||
|
||||
setElementRule.GenerateSerializationMethod(source, $"{indent} ", serializableSetElement);
|
||||
setElementRule.GenerateSerializationMethod(source, $"{indent} ", serializableSetElement);
|
||||
|
||||
source.AppendLine($"{indent} }}");
|
||||
source.AppendLine($"{indent}}}");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue