fix: Codgens more addons (#685)
* Fixes after deserialization not executing for older versions of an object * Codegens more addons
This commit is contained in:
parent
25fa9b397b
commit
4c265562bb
255 changed files with 1514 additions and 3742 deletions
|
|
@ -53,6 +53,22 @@ namespace SerializationGenerator
|
|||
source.AppendLine();
|
||||
}
|
||||
|
||||
var afterDeserialization = classSymbol
|
||||
.GetMembers()
|
||||
.OfType<IMethodSymbol>()
|
||||
.FirstOrDefault(
|
||||
m =>
|
||||
m.ReturnsVoid &&
|
||||
m.Parameters.Length == 0 &&
|
||||
m.GetAttributes()
|
||||
.Any(
|
||||
attr => SymbolEqualityComparer.Default.Equals(
|
||||
attr.AttributeClass,
|
||||
compilation.GetTypeByMetadataName(SymbolMetadata.AFTERDESERIALIZATION_ATTRIBUTE)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// Version
|
||||
source.AppendLine($"{indent}var version = reader.{(encodedVersion ? "ReadEncodedInt" : "ReadInt")}();");
|
||||
|
||||
|
|
@ -73,6 +89,10 @@ namespace SerializationGenerator
|
|||
source.AppendLine($"{indent}{{");
|
||||
source.AppendLine($"{indent} MigrateFrom(new V{migrationVersion}Content(reader));");
|
||||
source.AppendLine($"{indent} ((Server.ISerializable)this).MarkDirty();");
|
||||
if (afterDeserialization != null)
|
||||
{
|
||||
source.AppendLine($"{indent} Timer.DelayCall({afterDeserialization.Name});");
|
||||
}
|
||||
source.AppendLine($"{indent} return;");
|
||||
source.AppendLine($"{indent}}}");
|
||||
}
|
||||
|
|
@ -84,6 +104,10 @@ namespace SerializationGenerator
|
|||
source.AppendLine($"{indent}{{");
|
||||
source.AppendLine($"{indent} Deserialize(reader, version);");
|
||||
source.AppendLine($"{indent} ((Server.ISerializable)this).MarkDirty();");
|
||||
if (afterDeserialization != null)
|
||||
{
|
||||
source.AppendLine($"{indent} Timer.DelayCall({afterDeserialization.Name});");
|
||||
}
|
||||
source.AppendLine($"{indent} return;");
|
||||
source.AppendLine($"{indent}}}");
|
||||
}
|
||||
|
|
@ -99,22 +123,6 @@ namespace SerializationGenerator
|
|||
);
|
||||
}
|
||||
|
||||
var afterDeserialization = classSymbol
|
||||
.GetMembers()
|
||||
.OfType<IMethodSymbol>()
|
||||
.FirstOrDefault(
|
||||
m =>
|
||||
m.ReturnsVoid &&
|
||||
m.Parameters.Length == 0 &&
|
||||
m.GetAttributes()
|
||||
.Any(
|
||||
attr => SymbolEqualityComparer.Default.Equals(
|
||||
attr.AttributeClass,
|
||||
compilation.GetTypeByMetadataName(SymbolMetadata.AFTERDESERIALIZATION_ATTRIBUTE)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (afterDeserialization != null)
|
||||
{
|
||||
source.AppendLine();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue