Code/TypeCreator.cs
using System;
using System.Linq;
using System.Text.Json.Serialization;
namespace ExtendedEditor;
public sealed class TypeCreator
{
[JsonConverter(typeof(TypeJsonConverter))]
public Type Type { get; set; } = null!;
[JsonInclude]
private Any<object>[] Arguments { get; set; } = [];
public T Create<T>(Func<object[], object[]>? argumentsChanger = null)
{
var arguments = Arguments.Select(x => x.Value!).ToArray();
if(argumentsChanger is not null)
arguments = argumentsChanger.Invoke(arguments);
return TypeLibrary.Create<T>(Type, arguments)!;
}
}