Skip to content

Commit

Permalink
WrappedValueObjectGenerator: Now also avoiding ctors outside of conve…
Browse files Browse the repository at this point in the history
…rsion ops. (#15)
  • Loading branch information
Timovzl authored Mar 21, 2023
1 parent 5ef31b1 commit 36953f5
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions DomainModeling.Generator/WrapperValueObjectGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -204,9 +204,9 @@ private static void GenerateSource(SourceProductionContext context, Generatable
if (type.IsOrImplementsInterface(interf => interf.Name == "ISpanParsable" && interf.ContainingNamespace.HasFullName("System") && interf.Arity == 1 && interf.TypeArguments[0].Equals(type, SymbolEqualityComparer.Default), out _))
propertyNameParseStatement = $"return reader.GetParsedString<{typeName}>(System.Globalization.CultureInfo.InvariantCulture);";
else if (underlyingType.IsType<string>())
propertyNameParseStatement = $"return new {typeName}(reader.GetString()!);";
propertyNameParseStatement = $"return ({typeName})reader.GetString()!;";
else if (!underlyingType.IsGeneric() && underlyingType.IsOrImplementsInterface(interf => interf.Name == "ISpanParsable" && interf.ContainingNamespace.HasFullName("System") && interf.Arity == 1 && interf.TypeArguments[0].Equals(underlyingType, SymbolEqualityComparer.Default), out _))
propertyNameParseStatement = $"return new {typeName}(reader.GetParsedString<{underlyingType.ContainingNamespace}.{underlyingType.Name}>(System.Globalization.CultureInfo.InvariantCulture));";
propertyNameParseStatement = $"return ({typeName})reader.GetParsedString<{underlyingType.ContainingNamespace}.{underlyingType.Name}>(System.Globalization.CultureInfo.InvariantCulture);";

var propertyNameFormatStatement = "writer.WritePropertyName(value.ToString());";
if (type.IsOrImplementsInterface(interf => interf.Name == "ISpanFormattable" && interf.ContainingNamespace.HasFullName("System") && interf.Arity == 0, out _))
Expand Down
2 changes: 1 addition & 1 deletion DomainModeling.Tests/WrapperValueObjectTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ public override void Write(System.Text.Json.Utf8JsonWriter writer, FullySelfImpl
#if NET7_0_OR_GREATER
public override FullySelfImplementedWrapperValueObject ReadAsPropertyName(ref System.Text.Json.Utf8JsonReader reader, Type typeToConvert, System.Text.Json.JsonSerializerOptions options)
{
return new FullySelfImplementedWrapperValueObject(reader.GetParsedString<int>(CultureInfo.InvariantCulture));
return (FullySelfImplementedWrapperValueObject)reader.GetParsedString<int>(CultureInfo.InvariantCulture);
}

public override void WriteAsPropertyName(System.Text.Json.Utf8JsonWriter writer, FullySelfImplementedWrapperValueObject value, System.Text.Json.JsonSerializerOptions options)
Expand Down

0 comments on commit 36953f5

Please sign in to comment.