Editor/Wiring/Expressions/Expression.cs
using System;
using System.Text.Json.Serialization;
namespace Grains.RazorDesigner.Wiring;
[JsonPolymorphic( TypeDiscriminatorPropertyName = "$type" )]
[JsonDerivedType( typeof( LiteralExpression ), "Literal" )]
[JsonDerivedType( typeof( SymbolRefExpression ), "SymbolRef" )]
[JsonDerivedType( typeof( BinaryOpExpression ), "BinaryOp" )]
[JsonDerivedType( typeof( UnaryOpExpression ), "UnaryOp" )]
[JsonDerivedType( typeof( ConditionalExpression ), "Conditional" )]
[JsonDerivedType( typeof( MethodCallExpression ), "MethodCall" )]
[JsonDerivedType( typeof( MemberAccessExpression ), "MemberAccess" )]
[JsonDerivedType( typeof( InlineExpression ), "Inline" )]
public abstract record Expression
{
public Guid Id { get; init; } = Guid.NewGuid();
public string TypeId { get; init; }
}